Цифровые устройства и микропроцессорные системы. Задачи и упражнения: Учебное пособие (Представление чисел и арифметические операции в цифровых устройствах. Микропроцессорные устройства и системы на базе МП КР580ВМ80), страница 5

Максимальное число при записи с плавающей точкой , где p – число разрядов порядка (включая один знаковый); m – число разрядов мантиссы (включая один знаковый); р + m = п. Минимальное число Аплмин = -Аплмакс. Диапазон чисел .

По условию задачи должно быть Dnл > Dф, т. е.

.

При n, m >> l получим  и после двукратного логарифмирования

p > 1+1оg2(n – 1).

Это неравенство и является условием, при котором способ с плавающей точкой обеспечивает запись чисел более широкого диапазона, чем способ с фиксированной точкой.

При n = 16 получим р > 1 + log215, т.е. для целочисленных р и т р ³ 5 и т = п – 5 £ 11. Пусть, например, р = 7 и т = 9. Тогда АФмакс = 215 – 1 » 3×104; Dф » 6×104; ; Dпл » 2×1019 >> DФ.

Р1.24. При использовании фиксированной точки арифметические операции над числами проще (например, при суммировании не нужно выравнивать порядки слагаемых), но диапазон представимых чисел существенно меньше, чем при использовании плавающей точки. (Сравниваются, конечно, одинаковые по числу разрядов форматы.)

Р1.25. По определению дополнительного кода для целого отрицательного числа имеем

áАñдоп = 2" – êАê, где п – число двоичных разрядов, включая знаковый.

Следовательно,

.

Аналогично для дробного отрицательного числа

áAñдоп = 2 – |А| = 10,00…00(2) –|А| = (1,11...11(2) –|А|) + 0,00...01(2) = áАñо6р + 0,00...01(2).

P1.26. Правило для перехода от целого отрицательного числа к его дополнительному коду следует из соотношения

áAñдоп = áAñобр + 1, доказанного в задаче 1.25.

Правило для обратного перехода следует из соотношений

áАñдоп = 2n  - |А|;          |А| = 2n  - áАñдоп = (111...1 – áАñдоп) + 1.

Аналогичные правила имеют место и для дробных чисел.

Р1.27. Рассмотрим различные случаи сложения двух дробных чисел А и В:

1) А, В > 0;

áАñдоп + áBñдоп = А + В  = áА + Вñдош

т. е. дополнительный код суммы равен сумме дополнительных кодов слагаемых:

2) А > 0, В < 0;

áAñдоп + áBñдоп =A + (2 + B) = 2 + (A + В).

Если А > |В|, то А + В > 0, А + В = áА + Вñдопи áАñдоп + áBñдоп = 2 + áA + Bñдоп, т.е. образуется лишняя двойка (перенос из знакового разряда), которая не должна учитываться.

Если А < |В|, то А + В < 0; 2 + (A + B) = áA + Bñдоп и áAñдоп + áBñдоп = áA + Bñдоп;

3) А, В < 0;

áАñяоп + áВñлоп = 2 + А + 2 + В = 2 + (2 + А + В) = 2 + áА + Вñдоп, т. е. опять образуется лишняя двойка.

Таким образом, сумма дополнительных кодов слагаемых всегда равна (с точностью до несущественного переноса из знакового старшего разряда) дополнительному коду суммы. Рассмотрен случай дробных чисел, для целых чисел результат аналогичен.

Р1.28. Поскольку АВ = А + (–В), можно применить то же доказательство, что и в предыдущей задаче.

Р1.29. а) 0,101; б) 1,011; в) 0,0001; г) 1,0101; д) 01101; е) 11011101; ж) 01011101.

Р1.30. а) Поскольку число положительное, á0,1011ñдоп = 0,1011;

б) для отрицательного числа á-0,1011ñдоп = á0,1011ñо6р + 0,0001 = 1,0100 + 0,0001 = 1,0101;

в) 0,1101; г) 1,0111; д) 1,1000; е) 1,1111; ж) 1,000001; з) 01101; и) 10100011; к) 01011101.

Р1.31. а) Поскольку знаковый разряд 0, число положительное; оно совпадает с дополнительным кодом, т.е. 0,1100;

б) поскольку знаковый разряд 1, число отрицательное. Поэтому инвертируем все разряды, после чего добавляем единицу в младшем разряде. Получаем – 0,1111;

в) -0,1010; г) -0,10000; д) -0,1011; е) 0,1010; ж) -0,10111; з) 1011; и) -01000; к) -0101010.

Р1.32. а) áАñдоп = 0,11010; áВñдоп = 1,01111; áAñдоп + áBñдоп = 10,01001; áSñдоп = 0,0 1001 (образовавшийся перенос в знаковом разрядене учитываем); S = 0,01001;

б) áAñдоп = 1,00110; áBñдоп = 0,10001; áSñдоп = 1,10111; S=  = - 0,01001;

в) áAñдоп = 0,1010; áBñдоп = 1,0011; áSñдоп = 1,1101; S = - 0,0011;

г) áAñдоп =10110; áBñдоп = 01000; áSñдоп = 11110; S = - 00010;

д) áAñдоп = 01011010; áBñдоп = 10110111; áSñдоп = 00010001; S = 0010001.

P1.33. а) áAñдоп = 0,11101; á-Bñдоп = 1,10101; áRñдоп = 0,10010; R = 0,10010;

б) áAñдоп = 1,1011; á-Bñдоп =1,0110; áRñдоп = 1,0001; R= - 0,1111;

в) áAñдоп = 1,0111; á-Bñдоп = 0,0111; áRñдоп = 1,1110; R= - 0,0010;