Читайте также: |
|
При вычислении ЭВМ оперируют как с положительными, так и с отрицательными числами. При этом вычитание можно заменить сложением, воспользовавшись дополнением отрицательного числа. Дополнением числа 12510 будет число 87510, числа 12516 будет число ЕDВ16, для числа 11012 – число 112. Эти дополнения получают следующим образом:
_100010 _100016 _100002
125 10 125 16 1101 2
87510 EDB16 112
Так как в ЭВМ имеются только устройства, выполняющие сложение, то вычитание заменяется сложением специальных кодов чисел. Для выполнения операций с двоичными числами в ЭВМ используются прямой, обратный, дополнительный, модифицированные обратный и дополнительный коды. Изображение положительных чисел во всех кодах одинаково, а отрицательных – различно.
Прямой код совпадает с записью самого числа. В знаковом разряде записывается 0 (знак +) или 1 (знак -), а затем записывается само число.
Например, числа: А1=+0,1010 и А2= – 0,1010 в прямом коде записываются в виде: [А1]пр=0 1010 и [А2]пр=1 1010.
Пример: В1 = +0,101001 [В1]пр.= 0 101001;
В2 = – 0,11101 [В2]пр.= 1 11101.
Обратный код отрицательного числа получается следующим образом: в знаковом разряде записывается единица, а в цифровых разрядах нули заменяются единицами, а единицы – нулями.
Например, числа А1=+0,1010 и А2= – 0,1010 в обратном коде записываются в виде [А1]обр.=0 1010 и [А2]обр.=1 0101.
Пример: В1 = +0,101100 [В1]обр.= 0 101110;
В2 = – 0,010101 [В2]обр.= 1 101010.
Дополнительный код отрицательного числа получается добавлением единицы к младшему разряду обратного кода этого числа.
Например: числа А1=+0,1010 и А2= – 0,1010 в дополнительном коде записываются в виде: [А1]доп.=0 1010 и [А2]доп.=1 0110.
Пример: В1 = +0,00110 [В1]доп.= 0 00110;
В2 = – 0,001101 [В2]доп.= 1 110011.
Модифицированный код отличается тем, что на изображение знака числа в нем отводится два разряда, что дает возможность выявить переполнение разрядной сетки.
Например, для числа А= – 0,1010 получим [А]мобр.=11 0101, [А]мдоп.=11 0110.
Переход от обратного и дополнительного кодов к прямому осуществляется аналогично переходу от прямого кода к обратному и дополнительному.
При сложении и вычитании чисел в обратном коде единица переноса, вышедшая за пределы знакового разряда, не отбрасывается, а прибавляется к младшему разряду результата, что осуществляется автоматически.
Например, в обратном коде операции алгебраического сложения выполняются следующим образом:
1) а=0,1010>0 [а]обр.=0 1010
b=0,0010>0 [в]обр. =0 0010
[х]обр.=0 1100
х= 0,1100
2) а= – 0,1010<0 [а]обр.=1 0101
b= 0,1100>0 [в]обр. =0 1100
10 0001
[х]обр.=0 0010
х= 0,0010
3) а=0,1010>0 [а]обр.= 0 1010
b= – 0,0010<0 [в]обр. = 1 1101
10 0111
[х]обр.= 0 1000
х= 0,1000
4) a= – 0,1010<0 [a]обр.=1 0101
b= – 0,0010<0 [b]обр. =1 1101
11 0010
[x]обр.=1 0011
x= – 0,1100
Сложение и вычитание двоичных чисел в дополнительном коде происходит поразрядно, включая и знаковые разряды. Единица переноса, вышедшая за пределы знакового разряда, отбрасывается.
Пример:
a= – 0,1010<0 [a]доп.=1 0110
b= – 0,0010<0 [b]доп. =1 1110
11 0100
[х]доп.=1 0100
[х]обр.=1 0011
х= – 0,1100
Например, имеется число А1 = 0,101112 и А2 = 0,0112. Нужно выполнить действие А1-А2
_0,10111
0,01100
0,01011
Заменим операцию вычитания сложением. Для этого произведём кодирование: получим обратный и дополнительный коды для чисел А1 и А2.
[A1]обр.= 0 10111 [A2]обр.= 1 10011
[A1]доп.= 0 10111 [A2]доп.= 1 10100
Выполним операцию сложения полученных кодов
+ [A1]обр.= 0 10111
[A2]обр .= 1 10011
10 01010
[A1+A2]обр.= 0 01011
A1+A2 = 0,01011
+[A1]доп.= 0 10111
[A2]доп .= 1 10100
10 01011
[A1+A2]доп . = 0 01011
A1+A2 = 0,01011
Дата добавления: 2015-07-11; просмотров: 105 | Нарушение авторских прав