Машинные коды.
Прямой код двоичного числа образуется из абсолютного значения этого числа и кода знака (ноль или единица) перед его старшим числовым разрядом.
0 1010
1 1111
Пример. +1010 = +10102 -1510 = 11112
Обратный код двоичного числа образуется по следующему правилу:
Обратный код положительного числа совпадает с его прямым кодом.
Обратный код отрицательного числа содержит единицу в знаковом разряде числа, а значащие разряды числа заменяются инверсными, т.е. нули заменяются единицами, а единицы - нулями.
0 101
0 101
Пример. +510 = +1012 - прямой код - обратный код
1 1101
1 0010
-1310 = -11012 - прямой код - обратный код
Свое название обратный код чисел получил потому, что коды цифр отрицательного числа заменены на инверсные.
Основные свойства обратного кода чисел:
• сложение положительного числа с его отрицательным значением в обратном коде дает так называемую машинную единицу
1
111...11
МЕОК =
состоящую из единиц в знаковом и значащих разрядах числа;
• ноль в обратном коде имеет двоякое значение.
0
00...0
Он может быть положительным числом:
1
11...11.
и отрицательным числом
Значение отрицательного нуля совпадает с МЕ0К. Двойственное представление нуля явилось причиной того, что в современных ЭВМ все числа представляются не обратным, а дополнительным кодом.
Дополнительный код положительных чисел совпадает с их прямым кодом. Дополнительный код отрицательного числа представляет собой результат суммирования обратного кода числа с единицей младшего разряда (2° - для целых чисел, 2-к - для дробных).
0 101
0 101
Пример. +510 = +1012 - прямой код - обратный код
0 101
1 1101
1 0010
-1310 = -11012 - прямой код - обратный код
1 0010
1 0011
- обратный код - дополнительный код
+ 1 в младший разряд
Основные свойства дополнительного кода:
• сложение дополнительных кодов положительного числа с его отрицательным значением дает так называемую машинную единицу дополнительного кода:
10
00...00
МЕДК = МЕ0К + 2° = , т.е. число 102 (два) в знаковых разрядах числа;
• дополнительный код получил такое свое название потому, что представление отрицательных чисел является дополнением прямого кода чисел до машинной единицы МЕДК;
• нуль в дополнительном коде имеет единственное представление. Благодаря этому все современные компьютеры используют при хранении и преобразовании чисел именно двоичный код.
Модифицированные обратные и дополнительные коды двоичных чисел отличаются соответственно от обратных и дополнительных кодов удвоением значений знаковых разрядов. Знак «+» в этих кодах кодируется двумя нулевыми знаковыми разрядами, а «-» - двумя единичными разрядами.
0 1 0 0 1
Пример. А10 = +910 = +10012 А пр = А обр = А доп
0 0 1 0 0 1
А мод.пр = А мод.обр = А мод.доп
1 1 0 0 1
А10 = -910 = -10012 А пр
1 0 1 1 0
А обр
1 0 1 1 1
А доп
1 1 1 0 0 1
А мод.пр
1 1 0 1 1 0 0 11 0
1
А мод.обр
1 1 0 1 1 1
А мод.доп
Целью введения модифицированных кодов является фиксация и обнаружение случаев получения неправильного результата, когда значение результата превышает максимально возможный результат в отведенной разрядной сетке машины. В этом случае перенос из значащего разряда может исказить значение младшего знакового разряда. Значение знаковых разрядов «01» свидетельствует о положительном переполнении разрядной сетки, а «10» - об отрицательном переполнении. В настоящее время практически во всех моделях ЭВМ, в том числе во всех ПК, роль удвоенных разрядов для фиксации переполнения разрядной сетки играют переносы, идущие в знаковый и из знакового разряда.