Калькулятор дополнительного кода и IEEE 754: представление чисел в памяти компьютера

Сохранить
Нажмите Ctrl+D для сохранения
Пожалуйста, введите корректное число (допускаются цифры, минус и точка).

Укажите число, выберите нужный формат и нажмите кнопку ниже, чтобы получить подробный побитовый разбор.

Структура числа в памяти процессора

Как процессор хранит числа: от минусов к нулям и единицам

Представьте, что вы заглянули внутрь процессора. Там нет привычных нам знаков минуса «-» или плавающих запятых. Вся память состоит исключительно из ячеек, которые могут хранить только два состояния: есть ток (1) или нет тока (0). Из-за этого программистам и инженерам пришлось придумать строгие правила, как записывать отрицательные и дробные значения.

Как работает калькулятор дополнительного кода (для целых чисел)

Если мы хотим сохранить отрицательное целое число (например, -42), компьютер использует алгоритм под названием дополнительный код. Это делается для того, чтобы процессор мог складывать положительные и отрицательные числа по одним и тем же правилам, не усложняя свои микросхемы операцией вычитания.

Процесс перевода состоит из трех простых шагов:

  1. Прямой код: Берем число без знака (просто 42) и переводим его в обычную двоичную систему. Самый первый (крайний левый) бит выделяем под знак: «1» означает минус.
  2. Обратный код: Компьютер делает инверсию. Он пробегается по всему числу и меняет все нули на единицы, а единицы — на нули (знаковый бит при этом не трогаем).
  3. Дополнительный код: К полученному результату мы просто прибавляем математическую единицу (+1). Готово! Именно эта комбинация отправляется в оперативную память.

Разбор стандарта IEEE 754 (для дробей)

Если вам нужно сохранить число с точкой (например, 3.14 или -0.05), алгоритм с дополнительным кодом уже не сработает. Здесь в игру вступает международный стандарт IEEE 754. Наш калькулятор наглядно разбивает 32 бита памяти на три изолированные зоны:

  • Знак (1 бит): Здесь всё просто. 0 — число положительное, 1 — отрицательное.
  • Порядок / Экспонента (8 бит): Эта зона указывает, куда и на сколько позиций нужно сдвинуть плавающую запятую в числе. Чтобы не возиться с минусами внутри порядка, к реальной степени всегда прибавляется фиксированное число (смещение, равное 127).
  • Мантисса (23 бита): Это само «тело» дроби. Причем целая часть (цифра 1 до запятой) подразумевается сама собой, поэтому процессор её не записывает, экономя драгоценное место в памяти.

Чтобы понять логику, попробуйте ввести в калькулятор числа 1, -1, 0.5 и посмотрите, как меняются цветные блоки. Это отличная практика для подготовки к экзаменам по архитектуре ЭВМ и информатике.

Компьютер кодирует минус с помощью первого (знакового) бита: 0 — это плюс, 1 — минус. Целые отрицательные числа хранятся в дополнительном коде (инверсия битов + 1). Дроби записываются по стандарту IEEE 754, где 32 бита разделены на три блока: знак (1 бит), порядок (8 бит) и мантиссу (23 бита).

Как процессор видит отрицательные числа

Микрочип внутри компьютера — это просто набор переключателей. Там есть только ток (1) и отсутствие тока (0). Процессор физически не способен распознать символ минуса или запятой. Чтобы научить машину работать с долгами, отрицательными координатами и дробями, инженеры придумали хитрые правила кодирования.

Для целых чисел используется система прямого, обратного и дополнительного кода.

Пример расчета на пальцах: переводим число -15

Представим, что мы пишем программу, и нам нужно сохранить в памяти число -15. Процессор использует 32-битную ячейку (строку из 32 нулей и единиц).

  1. Прямой код. Сначала компьютер берет число 15 без минуса и переводит его в двоичный вид: 0000...00001111.
  2. Обратный код. Происходит инверсия. Все нули переворачиваются в единицы, а единицы — в нули. Получаем: 1111...11110000.
  3. Дополнительный код. К результату прибавляется +1. Итог: 1111...11110001.

Готово! Именно этот «бутерброд» из единиц и уйдет в оперативную память. Такая магия нужна для того, чтобы процессор мог складывать положительные и отрицательные числа в одном и том же калькуляторе, не тратя ресурсы на операцию вычитания.

Дроби и плавающая запятая (стандарт IEEE 754)

С вещественными числами (например, 3.14 или -0.75) правила игры меняются. Их нельзя просто перевести в двоичный код. Применяется формат IEEE 754, который делит 32 бита на три жесткие зоны.

Структура IEEE 754 (32 бита) Размер Зачем нужно?
Знак (Sign) 1 бит 0 — положительное, 1 — отрицательное число.
Порядок (Exponent) 8 бит Показывает, куда сдвигать запятую. Чтобы не хранить здесь минус, к реальной степени всегда прибавляют 127.
Мантисса (Mantissa) 23 бита Само тело числа после запятой. Целая единица до запятой подразумевается автоматически, поэтому в памяти не хранится (экономия места!).

Пример: почему ломается математика в коде?

Выделение под мантиссу ровно 23 бита имеет свои последствия. Вы наверняка слышали шутку программистов: если сложить 0.1 + 0.2, получится 0.30000000000000004. Почему так?

Некоторые десятичные дроби (как 0.1) в двоичной системе превращаются в бесконечную периодическую дробь. Компьютер не может хранить бесконечность — у него есть только 23 бита мантиссы. Он грубо «обрезает» хвост числа. Возникает микроскопическая погрешность округления. Когда мы складываем два таких «обрезанных» числа, погрешность вылезает наружу в виде лишней четверки на конце.

Частые ошибки при ручном переводе

  • Забыть про смещение экспоненты. Если настоящая степень числа равна 5, в порядок нужно записать число 132 (5 + смещение 127).
  • Записать целую часть в мантиссу. В нормализованном виде мантисса — это строго то, что идет после запятой. Первая единица скрыта аппаратно.
  • Перепутать инверсию. При расчете обратного кода знаковую единицу (первый бит) трогать нельзя. Она всегда остается на своем месте.
Максим Алипатов
Максим Алипатов
Разработчик и проектировщик
Сохранить
Нажмите Ctrl+D для сохранения
Архитектор веб-инструментов с многолетним опытом. Проектирую точные интерактивные калькуляторы для платформы calcman.ru. Моя цель — делать сложные вычисления простыми и моментальными: будь то расчеты для строительства и инженерии, бизнес-модели, финансы, IT или повседневные задачи в сфере здоровья и авто. От профи до любителя — точный ответ в один клик.
alipatov.com