Инструменты |
Дополнительный код (представление числа)Дополнительный код (англ. Two's complement) — наиболее распространенный способ представления отрицательных целых чисел в компьютерах. Он позволяет заменить операцию вычитания на операцию сложения, чем упрощает архитектуру ЭВМ. Дополнительный код отрицательного числа получается инвертированием двоичного числа и прибавлением к нему единицы.
[править] Представление числа в дополнительном кодеПри записи числа в дополнительном коде, старший разряд является знаковым. Если его значение равно 0, то в остальных разрядах записано положительное двоичное число, совпадающее с прямым кодом. Если же знаковый разряд равен 1, то в остальных разрядах записано отрицательное двоичное число, преобразованное в дополнительный код. Для получения значения отрицательного числа все разряды, кроме знакового, инвертируются, а к результату добавляется единица. Обратное преобразование, то есть перевод из дополнительного в прямой код, осуществляется аналогично. Двоичное 8-ми разрядное число может представлять любое целое в диапазоне от −128 до +127. Если старший разряд равен нулю, то наибольшее целое число, которое может быть записано в оставшихся 7 разрядах равно 27 − 1 Примеры:
десятичный 8-битный двоичный
прямой дополнительный
-------------------------------------
0 00000000 00000000
1 00000001 00000001
-1 -00000001 11111111
-10 -00001010 11110110
[править] Преобразование дополнительного кодаПреобразование числа из прямого кода в дополнительный осуществляется по следующему алгоритму.
Пример. Преобразуем отрицательное число −5, записанное в прямом коде, в дополнительный. Прямой код числа −5, взятого по модулю: 101 Инвертируем все разряды числа, получая таким образом обратный код: 010 Добавим к результату 1 и допишем знаковый единичный разряд 1011 Для обратного преобразования используется тот же алгоритм. А именно: 1011 Инвертируем все разряды числа, получая таким образом обратный код: 100 Добавим к результату 1 и проверим, сложив с дополнительным кодом 0101 + 1011 = 10000, пятый разряд выбрасывается. [править] Дополнительный код для десятичных чиселТот же принцип можно использовать и в компьютерном представлении десятичных чисел: для каждого разряда цифра X заменяется на 9−X, и к получившемуся числу добавляется 1. Например, при использовании четырёхзначных чисел −0081 заменяется на 9919 (9919+0081=0000, пятый разряд выбрасывается). [править] Реализация алгоритма преобразования в дополнительный код[править] Pascalif a<0 then begin a:=(not a) or 128; end; [править] См. также |