- •Системы счисления.
- •1. Перевод из одной системы счисления в другую и простейшие арифметические операции.
- •2.Основные арифметические операции
- •3. Формы представления чисел в эвм.
- •3.1. Числа с фиксированной точкой.
- •3.2 Числа с плавающей точкой.
- •4. Основы машинной арифметики с двоичными числами.
- •4.1 Коды чисел.
- •4.2 Особенности сложения чисел в обратном и дополнительном кодах.
- •4.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).
Задачи по теме