Прямой, обратный и дополнительный код
В этом уроке кратко рассмотрим как хранятся целочисленные числа в памяти компьютера и что такое прямой, обратный и дополнительный код.
Числа в памяти компьютера хранятся в двоичном виде. Допустим у нас есть тип byte. В одном байте у нас восемь бит. Двоичное представление значения типа byte
в памяти будет таким:
Старший бит, тот который самый левый, в целых числах со знаком используется для обозначения знака. Для положительных чисел он всегда равен 0. В отрицательных числах старший бит всегда равен 1. Такая запись числа в двоичной системе счисления называется прямой код.
В следующей таблице представлены числа в десятичной системе и их аналогичный формат в двоичной системе:
Таким образом, в двоичной системе счисления, используя прямой код, в восьмиразрядной ячейке (байте) можно записать семи разрядное число.
При этом в вычислительной технике прямой код используется почти исключительно для представления положительных чисел.
Для отрицательных чисел используется так называемый дополнительный код. Это связано с удобством выполнения операций над числами электронными устройствами компьютера.
Для перевода отрицательного числа в дополнительный код используется следующий алгоритм:
-
Все разряды числа (кроме первого разряда) инвертируются, т.е. заменяются противоположными (0 на 1, а 1 на 0):
-
Далее следует прибавить единицу к получившемуся инверсией числу:
В следующей таблице представлен прямой, обратный и дополнительный код для отрицательных чисел. В обратном коде существует небольшая проблема, связанная с тем, что у нас получается два ноля. У нас есть как бы 0 и -0, и они имеют разные значения. Но в дополнительном коде нолик имеет такое же значение, как и прямой код:
Презентацию с видео можно скачать на Patreon.
Курс 'Java для начинающих' на Udemy
Зарегистрируйтесь или войдите, чтобы иметь возможность оставить комментарий.