Меню
Главная
Случайная статья
Настройки
|
Обратный код (англ. ones' complement) — метод вычислительной математики, позволяющий вычесть одно число из другого, используя только операцию сложения над натуральными числами. Ранее метод использовался в механических калькуляторах (арифмометрах). Многие ранние компьютеры, включая CDC 6600, LINC, PDP-1 и UNIVAC 1107, использовали обратный код. Большинство современных компьютеров использует дополнительный код.
Содержание
Описание
Прямой n-разрядный двоичный код положительного целого числа состоит из одноразрядного кода знака (двоичной цифры "0" = "+"), за которым следует (n1)-разрядное двоичное представление числа.
Пример. Двоичное представление числа 5 есть 101. 10-разрядный двоичный код числа +5 записывается как 00 0000 0101.
Двоичный n-разрядный код отрицательного целого числа состоит из одноразрядного кода знака (двоичной цифры "1" = "-"), за которым следует (n1)-разрядное двоичное число, представляющее собой инвертированное (n1)-разрядное представление модуля числа. Следует отметить, что для изменения знака числа достаточно проинвертировать все его разряды, не обращая внимания, знаковый ли это разряд или информационный.
Пример. Двоичное представление числа 5 есть 101, его 10-разрядное двоичное представление — 00 0000 0101. Двоичный код 10-разрядного числа -5 есть 11 1111 1010.
Для преобразования отрицательного числа в положительное тоже применяется операция инвертирования. Этим обратные (инверсные) коды удобны в применении. В качестве недостатка следует отметить, что в обратных (инверсных) двоичных кодах имеются два кода числа 0: «положительный нуль» 00 0000 0000 и «отрицательный нуль» 11 1111 1111 (приведены 10-разрядные обратные коды). Это приводит к некоторому усложнению операции суммирования. Поэтому в дальнейшем перешли к дополнительным кодам записи знаковых целых чисел.
N-разрядный обратный код позволяет представить числа от (2N11) до 2N11, а дополнительный код - от 2N1 до 2N11.
Двоичный пример
Метод дополнений в основном используется в двоичной системе счисления (с основанием 210). В двоичной системе счисления "первое дополнение" (обратный код) очень просто получается инверсией каждого бита (заменой «0» на «1» и наоборот). "Второе дополнение" (дополнительный код) может быть получено из "первого дополнения" (обратного кода) добавлением единицы в младший значащий разряд (бит).[1] Например, рассмотрим
вычитание двух целых чисел: 10010 2210. Каждое число записываем 8-битовым кодом, при этом самый старший, 8-й разряд считается знаковым.
0110 01002 (x, равное десятичным 10010)
0001 01102 (y, равное десятичным 2210)
в методе дополнений становится суммой:
0110 01002 (x)
+ 1110 10012 (первое дополнение y)
+ 12 (чтобы получить второе дополнение)
————————————
1 0100 11102
После отбрасывания девятого (самого старшего, левого) бита получается ответ: 0100 11102 (это положительное число, равное десятичным 7810).
См. также
Литература- Самофалов К.Г., Романкевич А.М., Валуйский В.Н., Каневский Ю.С., Пиневич М.М. Прикладная теория цифровых автоматов. — Киев: Вища школа, 1987. — 375 с.
Ссылки
- http://matlab.exponenta.ru/fixedpoint/book1/1.php Архивная копия от 9 ноября 2011 на Wayback Machine К. Г. Жуков «Справочное руководство пользователя Fixed-Point Blockset» 1.2. Понятие прямого, обратного и дополнительного кодов
|
|