- •Тема 3. Информационно-логические основы построения эвм лекция 3.2. Представление информации в эвм
- •Представление символьной информации
- •ФорМы записи чисел
- •2.1. Естественная форма
- •2.2. Нормальная форма
- •Форматы Представления чисел
- •3.1. Формат с фиксированной точкой
- •3.2. Формат с плавающей точкой
- •3.3. Двоично-десятичный код
- •Выполнение арифметических операций с числами с фиксированной и плавающей запятой
- •4.1. Действия над числами, представленными в естественной форме (с фиксированной запятой)
- •4.2. Действия над числами, представленными в нормальной форме (c плавающей запятой)
4.1. Действия над числами, представленными в естественной форме (с фиксированной запятой)
При сложении кодов чисел в естественной форме следует учитывать следующие положения:
1) числа хранятся в памяти в дополнительном коде;
2) в сумматоре числа складываются вместе со знаками, при этом образуется знак результата;
3) при сложении чисел с разными знаками единица переноса из знакового разряда стирается, то есть компенсируется одна константа образования дополнительного кода;
4) при сложении чисел с одинаковыми знаками возможно переполнение разрядной сетки, его признаками являются:
а) знак суммы не соответствует знакам слагаемых;
б) переносы из старшего разряда суммы в знаковый и из знакового не согласуются, т. е. один из них есть, а другой отсутствует.
Очевидно, что если переносы согласуются, т. е. оба отсутствуют или оба присутствуют, то переполнение разрядной сетки не происходит.
Пример 3.19. Дано А = 254, В = 175. Найти сумму чисел при разных знаках слагаемых в 16-ти разрядном формате (обычной точности).
Решение.
а) представим исходные числа в двоичной системе счисления
A = 25410 = FE16 = 111111102 В = 17510 = AF16 = 101011112.
б) составим машинные коды этих чисел с разными знаками
[А]пр = 0.000000011111110; [В ]пр= 0.000000010101111.
[-A]доп= 1.111111100000010; [-B]доп= 1.111111101010001.
в) выполнение действий:
С1= А + В С2= А - В
[А]пр = 0.000000011111110 [А]пр= 0.000000011111110
[В]пр= 0.000000010101111 [-B]доп= 1.111111101010001
[C1]пр= 0.000000110101101 > 0 [C2Jпр=10.000000001001111>0
Сз= В - А С4 = -А-В
[В ]пр= 0.000000010101111 [-A]доп= 1.111111100000010
[-A]доп= 1.111111100000010 [-B]доп= 1.111111101010001
[-С3]доп=1.111111110110001<0 [-С4]доп =11.111111001010011<0
Из примера следует:
1) При получении сумм слагаемых с одинаковыми знаками (C1 и С4) переполнение разрядной сетки не произошло, т. к. знак суммы соответствует знакам слагаемых и переносы в знаковый и из знакового согласуются.
2) При получении сумм С2 и С4 образовался перенос из знакового разряда, который следует исключить.
3) Суммы C1 и С2 — положительные, СЗ и С4 — отрицательные, т. е. знаки результатов получены автоматически при сложении чисел со знаками.
Полученные суммы заносятся в разрядную сетку памяти в дополнительном коде, т. е. без изменения.
Проверка. Для этого следует перевести полученные суммы любым способом в десятичную систему и сравнить с заданием. С1 = 110101101 = 1 × 28+ 1 ×27 + 1 × 25+ 1 × 23+ 1 × 22+ 1 × 2° = 256 + 128 + 32 + 8 + 4 + 1= 429; (С =254+ 175 = 429).
С2= 1001111 =4F = 4 × 16+15 = 79; (С = 254 - 175 = 79).
С3 = -1001111 =-[(((((1 × 2 + 0)2 + 0)2 + 1)2 + 1)2 + 1)2 + 1] = -79.
С4 = -110101101 =-1AD = -[(1 × 16 +10) 16 +13] = -429.
Пример 3.20. Дано А = 25756, В = 7125. Найти суммы положительных и отрицательных значений в 16-ти разрядном формате.
Решение. А = 2575610 = 649C16 = 1100100100111002; В = 712510 = 1BD516 = 11011110101012.
С1=А+В С2 =-А - В
[А]пр = 0.110010010011100 [-A]доп= 1.001101101100100
[В]пр= 0.001101111010101 [-B]доп=1.110010000101011
[C1]пр=1.000000001110001<О [C2Jпр=10.111111101001111>0
Полученные суммы не соответствуют ожидаемым результатам, т. к. произошло переполнение разрядной сетки за допустимые значения (32767). Переполнение разрядной сетки легко определить либо по первому признаку — знаки сумм C1 и С2 не соответствуют знакам слагаемых, либо по второму — переносы в знаковый и из знакового разряда в суммах C1 и С2 не согласуются. В этих случаях в больших ЭВМ вырабатывается запрос на прерывание программы, в некоторых типах малых ЭВМ производится автоматический переход к нормальной форме представления данных а в персональных обычно производится автоматическое ограничение числа.
Замечание. Операции умножения и деления производятся над абсолютными значениями чисел — в прямом коде, знак произведения определяется сложением по модулю 2 знаков сомножителей (0 + 0 = 0, 1+0 = 1, 1 + 1 = 0), знак частного — сложением по модулю 2 знаков делимого и делителя, а знаку остатка присваивается знак делимого.