Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
01 машинная арифметика.doc
Скачиваний:
10
Добавлен:
04.05.2019
Размер:
439.3 Кб
Скачать

4.3 Модифицированные обратный и дополнительный коды.

При переполнении разрядной сетки, происходит перенос единицы в знаковый разряд. Это приводит к неправильному результату, причем положительное число, получившееся в результате арифметической операции может восприниматься как отрицательное (так как в знаковом разряде "1") и наоборот.

Пример

:

Здесь X и Y - коды положительных чисел, но ЭВМ воспринимает результат их сложения как код отрицательного числа ("1" в знаковом разряде). Для обнаружения переполнения разрядной сетки вводятся модифицированные коды.

В модифицированном обратном и модифицированном дополнительном кодах под знак числа отводится не один, а два разряда: "00" соответствует знаку "+", "11" - знаку "-". Любая другая комбинация ("01" или "10"), получившаяся в знаковых разрядах служит признаком переполнения разрядной сетки. Сложение чисел в модифицированных кодах ничем не отличается от сложения в обычных обратном и дополнительном кодах.

Рассмотрим предыдущий пример, выполнив сложение в модифицированном обратном коде:

    

Комбинация "01" в знаковых разрядах означает, что произошло переполнение и получившийся результат - неверный.

Пример.

Даны два числа: X=101001 и Y= -11010. Сложить их в модифицированном дополнительном коде.

1) Переведем X и Y в модифицированный дополнительный код:

Обычная запись

Модифицированный обратный код

Модифицированный дополнительный код

X= +101001 Y= -011010

2) Выполним сложение:

    

Переполнения нет (в знаковых разрядах "00"), поэтому полученный результат - верный (X+Y=1111)

1. Перевести данное число из десятичной системы счисления в двоичную:

а) 464(10);

б) 380,1875(10);

в) 115,94(10)

(получить пять знаков после запятой в двоичном представлении).

а) 464 | 0 б) 380 | 0 |1875 в) 115 | 1 |94

232 | 0 190 | 0 0|375 57 | 1 1|88

116 | 0 95 | 1 0|75 28 | 0 1|76

58 | 0 47 | 1 1|5 14 | 0 1|52

29 | 1 23 | 1 1|0 7 | 1 1|04

14 | 0 11 | 1 3 | 1 0|08

7 | 1 5 | 1 1 | 1 0|16

3 | 1 2 | 0

1 | 1 1 | 1

а) 464(10) = 111010000(2);

б) 380,1875(10) = 101111100,0011(2);

в) 115,94(10) » 1110011,11110(2) (в настоящем случае было получено шесть знаков после запятой, после чего результат был округлен)

Переведем из двоичной системы в восьмеричную число

1111010101,11(2).

001 111 010 101,110(2) = 1725,6(8).

Переведем из двоичной системы в шестнадцатеричную число

1111010101,11(2).

0011 1101 0101,1100(2) = 3D5,C(16).

2. Перевести данное число в десятичную систему счисления.

1000001(2)

1000001(2)=1× 26+0× 25+0× 24+0× 23+0× 22+ 0× 21+1× 20 = 64+1=65(10).

Замечание. Очевидно, что если в каком-либо разряде стоит нуль, то соответствующее слагаемое можно опускать.

б) 1000011111,0101(2).

1000011111,0101(2)=1×29 + 1×24 + 1×23 + 1×22 + 1×21 + 1×20 + 1×2-2 + 1×2-4 = 512 + 16 + 8 + 4 + 2 + 1 + 0,25 + 0,0625 = 543,3125(10).

в) 1216,04(8).

1216,04(8)=1×83+2×82+1×81+6×80+4× 8-2 = 512+128+8+6+0,0625 = 654,0625(10).

г) 29A,5(16).

29A,5(16) = 2×162+9×161+10×160+5×16-1 = 512+144+10+0,3125 = 656,3125(10).

а) 10000000100(2) + 111000010(2)

б) 223,2(8) + 427,54(8)

в) 3B3,6(16) + 38B,4(16)

10000000100 223,2 3B3,6

+ 111000010 + 427,54 +38B,4

------------ ------- -----

10111000110 652,74 73E,A

а) 10000000100(2) + 111000010(2) = 10111000110(2).

б) 223,2(8) + 427,54(8) = 652,74(8).

в) 3B3,6(16) + 38B,4(16) = 73E,A(16).

Выполним проверку результатов расчетов переводом в десятичную систему счисления. Для этого переведем каждое слагаемое и сумму в десятичную систему счисления, выполним сложение слагаемых в десятичной системе счисления. Результат должен совпасть с суммой.

а) 10000000100(2)=1×210+1× 22 = 1024+4=1028(10)

111000010(2)=1×28+ 1×27+ 1×26+ 1×21 = 256+128+64+2 = 450(10)

10111000110(2)=1×210+ 1×28+ 1×27+ 1×26+ 1×22+ 1×21 = 1024+256+128+64+4+2 = 1478(10)

1028(10)+450(10) = 1478(10)

Результаты совпадают, следовательно, вычисления в двоичной системе счисления выполнены верно!

б) 223,2(8)=2×82+ 2×81+ 3×80+ 2×8-1 = 128+16+3+0,25 = 147,25(10)

427,54(8)= 4×82+ 2×81+ 7×80+ 5×8-1+ 4×8-2 = 256+16+7+0,625+0,0625 = 279,6875(10)

652,74(8)= 6×82+ 5×81+ 2×80+ 7×8-1+ 4×8-2 = 384+40+2+0,875+0,0625 = 426,9375(10)

147,25(10)+279,6875(10) = 426,9375(10)

Результаты совпадают, следовательно, вычисления в восьмеричной системе счисления выполнены верно!

в) 3B3,6(16)= 3×162+ 11×161+ 3×160+ 6×16-1 = 768+176+3+0,375 = 947,375(10)

38B,4(16)= 3×162+ 8×161+ 11×160+ 4×16-1 = 768+128+11+0,25 = 907,25(10)

73E,A(16)= 7×82+ 3×81+ 14×80+ 10×8-1 = 1792+48+14+0,625 = 1854,625(10)

947,375(10)+907,25(10) = 1854,625(10)

Результаты совпадают, следовательно, вычисления в шестнадцатеричной системе счисления выполнены верно!

4. Выполнить вычитание:

а) 1100000011,011(2) - 101010111,1(2) = 110101011,111(2).

б) 1510,2(8) - 1230,54(8) = 257,44(8).

в) 27D,D8(16) - 191,2(16) = EC,B8(16).

1100000011,011 1510,2 27D,D8

- 101010111,1 -1230,54 -191,2

-------------- ------- ------

110101011,111 257,44 EC,B8

5. Выполнить умножение:

а) 100111(2) * 1000111(2)

б) 1170,64(8) * 46,3(8)

в) 61,A(16) * 40,D(16)

100111 1170,64 61,A

*1000111 * 46,3 *40,D

------------- -------------- ----------

100111 355234 4F52

+ 100111 + 732470 + 1868

100111 474320 ----------

100111 ------------- 18B7,52

------------- 57334,134

101011010001

а) 100111(2) * 1000111(2) = 101011010001(2).

б) 1170,64(8) * 46,3(8) = 57334,134(8).

в) 61,A(16) * 40,D(16) = 18B7,52(16).

6. Выполнить деление:

а) 100110010011000(2) : 101011(2)

б) 46230(8) : 53(8)

в) 4C98(16) : 2B(16)

а) 100110010011000(2) : 101011(2)=111001000(2);

б) 46230(8) : 53(8)=710(8);

в) 4C98(16) : 2B(16)=1C8(16).

Задачи по теме

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]