Двоичное дополнение
Двоичное дополнение
Для изображения как положительных, так и отрицательных чисел 8088
применяет арифметику двоичного дополнения. В такой знакопеременной
арифметике самый левый бит целого числа указывает на его знак. По-
ложительные числа имеют 0 в старшем бите, а отрицательные - 1. По-
ложительные числа имеют одинаковое значение в знаковой и без-
знаковой арифметике. У отрицательных же значение иное. Для того
чтобы сделать число отрицательным, изменить его знак на минус, оно
дополняется и результат увеличиваетя на единицу. В 4-х битовом
примере 5 имеет значение 0101B, в то время как -5 равно 1011B.
Пример на Фиг. 2.4 показывает этот метод.
Пример на Фиг. 2.5 показывает единственность нуля в арифметике
двоичного дополнения. То есть -0 равен 0. Для любого n-битового
числа в системе с двоичным дополнением наибольшее значение сос-
тавляет 2**(n-1)-1, а наименьшее -2**(n-1). Ноль - единственен. В
4-х битовой системе наибольшее число, как показано на Фиг. 2.6,
равно 7, а наименьшее -8.
_________________________
5 = 0101B
Для изменения знака:
Дополняем 1010B
Добавляем 1 0001B
----- __________________________________
-5 = 1011B 0 = 0000B
Для изменеия знака: Для изменения знака:
Дополняем 0100B Дополняем 1111B
добавляем 1 0001B Добавляем 1 0000B
----- -----
5 = 0101B -0 = 0000B = 0
_________________________ __________________________________
Фиг. 2.4 Двоичное допол- Фиг. 2.5 То же самое с нулем
нение 5
Как мы увидим позднее, процессор 8088 может работать с одним и
тем же целым как со значением имеющим или не имеющим знак. Выбор
оставлен программисту языка ассемблера. Во всяком случае, когда
программа работает в арифметике со знаком, процессор 8088 применяет
при проведении операций двоичное дополнение.
Десятичное Двоичное Десятичное Двоичное
-------------------------------------------------
7 0111 -1 1111
6 0110 -2 1110
5 0101 -3 1101
4 0100 -4 1100
3 0011 -5 1011
2 0010 -6 1010
1 0001 -7 1001 Фиг. 2.6 Числа
0 0000 -8 1000 с двоичным
------------------------------------------------- дополнением