Читайте также:
|
|
(для компьютера - это целые числа)
При сложении кодов целых чисел нужно учитывать следующие положения.
Числа хранятся в дополнительном коде.
В сумматоре числа складываются вместе со знаками, при этом образуется знак результата.
При сложении чисел с разными знаками единица переноса из знакового (старшего) разряда стирается.
Пример. Дано А=254, В=175. Найти сумму чисел при разных знаках слагаемых в 16-разрядном формате.
А = 25410 = FE16 = 111111102
В = 17510 = AF16 = 101011112
Машинные коды этих чисел с разными знаками представим в таблицах.
254 -254
ПК 0 000000011111110 1 000000011111110
ОК 0 000000011111110 1 111111100000001
ДК 0 000000011111110 1 111111100000010
175 -175
ПК 0 000000010101111 1 000000010101111
ОК 0 000000010101111 1 111111101010000
ДК 0 000000010101111 1 111111101010001
Выполним действия (во всех случаях выполняется сложение в дополнительном коде!).
С1 = А + В
А 0000000011111110
В 0000000010101111
С1 0000000110101101
Проверка: С1 = 1101011012 = 28+27+25+23+22+20 = 256+128+32+8+4+1 = 42910
С2 = А - В = А + (-В)
А 0000000011111110
-В 1111111101010001
С2 10000000001001111
Перенос из знакового разряда исключаем.
Проверка: С2 = 10011112 = 26+23+22+21+20 = 64+8+4+2+1 = 7910
С3 = В - А = В + (-А)
В 0000000010101111
-А 1111111100000010
С3 1111111110110001
Число С3 отрицательное в дополнительном коде.
Проверка: получим прямой код числа С3.
ДК 1111111110110001
ОК 1111111110110000
ПК 1000000001001111
С3 = -10011112 = -(26+23+22+21+20)= -(64+8+4+2+1) = -7910
С4 = -А - В = (-А) + (-В)
-А 1111111100000010
-В 1111111101010001
С4 11111111001010011
Перенос из знакового разряда исключаем.
Число С4 отрицательное в дополнительном коде.
Проверка: получим прямой код числа С4.
ДК 1111111001010011
ОК 1111111001010010
ПК 1000000110101101
С4 = -1101011012 =-(28+27+25+23+22+20)=-(256+128+32+8+4+1) =- 42910
15. Действия над числами, представленными в нормальной форме.
При сложении чисел, представленных в нормальной форме, необходимо учитывать:
Числа в нормальной форме хранятся в памяти в прямом коде с нормализованными мантиссами.
Сложение кодов чисел производится путем сложения мантисс только при одинаковых порядках (характеристиках) слагаемых. За общий выбирается наибольший порядок. Выравнивание порядков слагаемых осуществляется изменением мантиссы меньшего числа.
Результаты в прямом коде нормализуются.
Пример. Дано А = 15 7/8; B = 5/16. Найти сумму чисел при разных знаках слагаемых.
Вычисления с числами в нормальной форме удобнее выполнять в шестнадцатеричной системе счисления, разряды чисел 4 байта (32 двоичных разряда).
A = F,E16; B = 0,516
1. Нормализация мантисс и определение характеристик:
mA = 0,FE PxA = 40 + 1 = 41
mB = 0,5 PxB = 40 + 0 = 40
2. Выравнивание характеристик:
PxB = 41 => mB = 0,05
3. Дополнительные коды мантисс отрицательных чисел.
-mA = 1.00 - 0,FE = 0,02
-mB = 1.00 - 0,05 = 0,FB
4. Коды чисел:
а) в шестнадцатеричном представлении
A = 41FE0000
B = 41050000
-A = C1020000
-B = C1FB0000
б) в двоичном представлении
A = 0 1000001 1111 1110 0000 0000 0000 0000
B = 0 1000001 0000 0101 0000 0000 0000 0000
-A = 1 1000001 1111 1110 0000 0000 0000 0000
-B = 1 1000001 0000 0101 0000 0000 0000 0000
Примечание: для записи отрицательных кодов чисел удобнее сначала записать код в двоичном представлении, затем преобразовать его в шестнадцатеричное.
Важно: помните, что числа в нормальной форме представления хранятся в прямом коде!
5. Выполнение действий.
C1 = A + B
mA FЕ0000
mB 050000
mC1 1030000
Так как слагаемые с одинаковым знаком, то перенос единицы из старшего разряды мантиссы означает нарушение нормализации мантиссы влево.
Нормализация мантиссы: mC1 = 0,103 PC1 = 41 + 1 = 42
Код числа C1 = 42103000 или 0 1000010 0001 0000 0011 0000 0000 0000
Проверка: С1 = 10,316 = 16 3/1610
C2 = -A - B = - (A + B)
Так как числа хранятся в прямом коде, нет необходимости выполнять двойные преобразования, можно взять C2 = -C1.
Код числа С2 = 1 1000010 0001 0000 0011 0000 0000 0000 или C2103000
С2 = -10,316 = -16 3/16 10
C3 = A – B
mA FЕ0000
-mB FB0000
mC3 1F90000
Так как слагаемые с разными знаками, то единица переноса из старшего разряда является признаком положительного результата и стирается.
Код числа С3 = 41F90000 или 0 1000001 1111 1001 0000 0000 0000 0000
С3 = F,916 = 15 9/1610
C4 = B – A
-mA 0200000
mB 0500000
-mC4 0700000
Так как слагаемые с разными знаками и отсутствует перенос из старшего разряда мантиссы, то результат отрицательный в дополнительном коде и должен быть преобразован в прямой код.
mC4 = 1,00 - 0,07 = 0,F9 PmC4 = 41
Код числа С4 = C1F90000 или 1 1000001 1111 1001 0000 0000 0000 0000
C4 = -F,916 = -15 9/1610
Дата добавления: 2015-01-30; просмотров: 197 | Поможем написать вашу работу | Нарушение авторских прав |