Представление отрицательных чисел в компьютере — это их выражение в виде дополнительного кода, который является самым применяемым для этих целей.
Введение
Под дополнительным кодом понимается самый используемый метод задания отрицательных целых чисел в компьютерной среде. Этот код даёт возможность использовать операционную процедуру сложения вместо вычитания, что делает данные процедуры равноценными как для чисел, имеющих знак минус, так и для чисел, не имеющих знака.
Такая числовая организация позволяет сильно упростить структурное построение электронных вычислительных машин. В западных версиях обратный код принято обозначать первым дополнением, а дополнительный код обозначать как второе дополнение. Дополнительный код отрицательного числа возможно сформировать путём инверсии его модуля в двоичном коде с последующим добавлением к инвертированному значению единицы. Этот вариант обозначается как второе дополнение. Дополнительный код числа со знаком минус возможно также сформировать, если вычесть это число из нуля. То есть, дополнительный код числа в двоичном коде, может быть сформирован путём добавления единицы к младшему не нулевому разряду первого дополнения этого числа. Второе дополнение числа в двоичном коде формируется как кодовый набор, который получается при вычитании числа из самой большой степени двойки, то есть из два в степени N для второго дополнения числа, состоящего из N двоичных кодов.
Отрицательные числа в дополнительном коде
Когда число представляется в формате дополнительного кода, то старший разряд будет считаться определяющим знак. Когда этот разряд равняется нулю, то в остальных разрядах записывается значение, которое совпадает с его основным кодированием. Число, состоящее из восьми разрядов в двоичном коде и имеющее знак, возможно представить в дополнительном коде как некое целочисленное значение в зоне от −128 до +127. Когда старший разряд имеет нулевое значение, то наибольшим числовым значением, которое возможно записать в остальных семи позициях, будет: $2^7 – 1$.
Десятичные числа в дополнительном коде
Аналогичная методика применяется и для отображения десятичных чисел в электронных вычислительных машинах. Последовательно выполняется замена символа Х на 9 – Х, и результату добавляется единица. К примеру, если применяются числа из четырёх разрядов, то – 2272 нужно заменить на 7728, то есть 7728 + 2272 = 0000, пятый разряд отбрасывается при этом.
Перевод числа из прямого кода в дополнительный
Чтобы преобразовать число из прямого кода в дополнительный, нужно:
- В случае равенства нулю старшего числового разряда, являющегося знаковым, никаких переформирований не требуется, поскольку это означает, что число положительное.
- В случае равенства единице старшего разряда числа, представленного в прямом коде, все остальные числовые разряды подвергаются инверсии, а затем к итогу надо прибавить единицу.
Например, необходимо выполнить преобразование отрицательного числа пять, представленного в прямом коде, в формат дополнительного кода. Основным кодом является двоичный код:
1000 0101
Далее необходимо выполнить инверсию числовых разрядов, за исключением знакового, что даёт в результате обратный код числа минус пять:
1111 1010
Осталось прибавить единицу, что даст искомый итоговый дополнительный код:
1111 1011
Достоинства и недостатки
К достоинствам следует отнести:
- Единый набор команд для выполнения арифметических операций и сдвига влево для числовых выражений, имеющих и не имеющих знак.
- Не существует цифра нуль с минусом.
К недостаткам относятся:
- Формат выражения отрицательных чисел не подпадает в визуальном смысле под общие правила.
- В отдельных форматах или их отдельных составляющих есть неудобства при кодировании.
- Самое большое число по модулю не равно самому маленькому числу.