P
pro·school.ru
Каталог школ

Представление целых чисел в памяти компьютера

💻 Информатика · 8 класс

Как числа хранятся в памяти компьютера

Представление чисел в памяти — это способ записи числовых данных в виде последовательности двоичных разрядов (битов). Память компьютера состоит из множества ячеек, и каждая ячейка хранит фиксированное число разрядов. Восемь битов образуют байт — основную единицу, которой измеряют объём памяти. В одном байте можно записать одно небольшое целое число или один символ.

Набор разрядов, отведённый под одно число, называют разрядной сеткой. Размер сетки заранее задаёт, сколько разных значений можно записать. В сетке из n разрядов помещается 2^n различных целых неотрицательных чисел: от нуля до значения на единицу меньше, чем 2^n.

Сколько значений в разрядной сетке

Число разрядовКоличество значенийДиапазон без знака
8256от 0 до 255
1665536от 0 до 65535

Из таблицы видно: чем больше разрядов, тем шире диапазон. Поэтому для больших чисел отводят больше байтов памяти.

Беззнаковое представление

Если число всегда неотрицательное, под него отводят все разряды сетки. Чтобы записать число, его переводят в двоичную систему, а недостающие старшие разряды заполняют нулями до края сетки. Например, число 100 в восьмиразрядной сетке записывается так:

100 (10) = 0110 0100 (2)

Старший нуль слева не меняет значения числа, но необходим, чтобы заполнить всю сетку ровно восемью разрядами.

Представление со знаком

Чтобы хранить и отрицательные числа, один разряд отводят под знак. Обычно это самый старший (крайний левый) разряд: значение 0 в нём означает плюс, а 1 — минус. При этом весь диапазон значений делится примерно пополам между положительными и отрицательными числами. Например, в восьмиразрядной знаковой сетке помещаются целые числа от минус 128 до плюс 127. Из-за того, что один разряд занят знаком, наибольшее положительное число становится меньше, чем при беззнаковом хранении.

РазрядностьБез знакаСо знаком
80 … 255−128 … 127
160 … 65535−32768 … 32767

Переполнение

Если результат вычисления не помещается в разрядную сетку, происходит переполнение: старший разряд, который должен был появиться, не помещается и теряется, а ответ оказывается неверным.

255 + 1 в 8 разрядах: 1111 1111 + 1 = 1 0000 0000 -> остаётся 0000 0000 = 0

Здесь после сложения возникает девятый разряд, но он выходит за пределы восьмиразрядной сетки и отбрасывается, поэтому вместо 256 получается 0.

Частая ошибка: думать, что компьютер хранит сколь угодно большие числа. На самом деле размер сетки ограничен, и при выходе за её пределы возникает переполнение, искажающее результат.

Кратко о главном

  • Числа хранятся как последовательность двоичных разрядов.
  • Восемь битов образуют один байт.
  • В сетке из n разрядов помещается 2 в степени n значений.
  • Для знаковых чисел старший разряд отводят под знак.
  • При выходе за пределы сетки происходит переполнение.