Пример:
Сложить два числа (ЧПЗ) Z=X+Y для S = 2.
|
PX |
qX |
22*0.75=3(10) |
|||
X 010 |
0.11 |
|||||
|
PY |
qY |
21*0.5=1(10) |
|||
Y 001 |
0.10 |
|||||
|
|
|
|
|
|
|
1.010 0.01 - выравнивание порядка Y
2.+0.11 - qx
1.00
3.010 1.00 - ненормализованное значение Z
PZ |
qZ |
4. 011 |
0.10 - нормализованное значение Z |
Z=011 |
0.10 = 23 * 0.5= 4(10) |
Умножение ЧПЗ
Требуется вычислить Z=X*Y. Формальное выражение для выполнения этой операции можно записать следующим образом:
Z=X*Y=qxSPx*qySPy= qxqyS(Px+Py)=qzSPz
Алгоритм выполнения операции состоит в следующем:
1.Мантиссы сомножителей перемножаются;
2.Порядки сомножителей складываются;
3.Произведение нормализуется;
4.Произведению присваивается знак, в соответствии с алгоритмом, приведенным для ЧФЗ, а именно:
= = ( ) | | | |;
+, ( ) = ( ) ( ) = {−, ( ) ≠ ( )
24
Рассмотрим простейший раздельный алгоритм перемножения ЧПЗ.
Умножение ЧПЗ сводится к следующим операциям:
алгебраическое суммирование порядков - это операции над целыми числами или ЧФЗ с фиксацией точки справа от МЗР;
перемножение мантисс - это операции над правильными дробями или над ЧФЗ с фиксацией точки слева от СЗР;
определение знака произведения.
Если требуется сохранить все разряды, то в устройстве, формирующем произведение, число разрядов должно равняться сумме числа разрядов множителя и множимого. Однако часто в произведении требуется сохранить то же количество разрядов, что и в множимом. Это приводит к потере младших разрядов [2].
Рассмотрим пример перемножения двух чисел «младшими разрядами вперед» для случая, когда разрядная сетка результата соответствует разрядной сетке сомножителей.
Пример:
Вычислить Z=X*Y=0.1101(2) * 0.1011(2) = 0.8125(10) * 0.6875(10) = 0.55859375(10)
25
X= |
0. 1 1 0 1 |
|
|
||||
Y= |
0. 1 0 1 1 |
|
|
||||
|
|
|
|
|
0.1101 |
P1 |
|
|
|
|
|
|
|
||
|
|
|
|
|
|||
|
|
|
0.0110 1 |
сдвиг на 1 разряд вправо |
|||
|
|
|
+ |
|
|
||
|
|
|
0.1101 |
P2 |
|||
|
1.0011 1 |
сумма P1 + P2 |
|||||
|
0.1001 11 |
сдвиг на 1 разряд вправо |
|||||
|
+ |
|
|
||||
|
|
|
|
0.0000 |
P3 |
||
|
|
|
|||||
|
0.1001 11 |
сумма P1+P2+P3 |
|||||
|
0.0100 111 |
сдвиг на 1 разряд вправо |
|||||
+0.1101
P4
1.0001
111 сумма P1+P2+P3+P4
0.1000
1111 сдвиг на 1 разряд вправо
+
0.0000
0.1000
1111 - результат
Таким образом, результат Z=0.1000(2)=0.5(10), поскольку последние четыре разряда потеряны.
Из примера видно, что если разрядная сетка ограничена числом разрядов X, то результаты правее вертикального пунктира не фиксируются после выполнения сдвигов. Таким образом, четыре младших разряда будут потеряны, и результат будет приближенный 0.1000(2). В ряде случаев используется округление по правилу: если старший из отбрасываемых разрядов содержит 1, то к младшему из сохранившихся разрядов добавляется 1. В данном примере получается число 0.1001(2).
Взаключение отметим следующее:
если мантисса X или Y равна 0, то перемножение не проводится и Z=0;
если при суммировании PX и PY возникло переполнение и PZ<0, то это означает, что Z меньше минимального представляемого в машине числа и Z присваивают 0 без перемножения мантисс;
26
если при суммировании PX и PY возникло переполнение и PZ>0, может оказаться, что Z все же находится в диапазоне представляемых в ЭВМ чисел, т.к. после нормализации полученного qZ переполнение в порядке может исчезнуть.
Задание и контрольные вопросы
Используя двоичные числа из таблицы ниже провести следующие расчеты:
провести нормализацию числа с фиксированной за-
пятой;
выполнить операцию сложения над первым и третьим числом, вторым и четвертым числом и затем над их суммами;
выполнить операцию умножения над первым и третьим числом, вторым и четвертым числом и затем над их суммами.
|
|
|
|
Таблица 4 |
|
|
Задания для вариантов |
|
|
||
Варианты |
1-5 |
6-10 |
11-15 |
16-20 |
|
ЧФЗ |
110110 |
100100 |
111011 |
100111 |
|
Число 1 |
0.110101 |
0.101010 |
0.101111 |
0.111000 |
|
Число 2 |
0.010011 |
0.111000 |
0.001111 |
0.001100 |
|
Число 3 |
0.111011 |
0.001011 |
0.110011 |
0.001001 |
|
Число 4 |
0.000111 |
0.100100 |
0.000001 |
0.010111 |
|
При защите результатов практического задания необходимо представить содержащий их отчет и продемонстрировать свои теоретические знания и практические навыки согласно выполненному заданию.
27
Контрольные вопросы
1.Два варианта представление чисел с фиксированной точкой в ЭВМ.
2.Представление чисел с плавающей точкой в
ЭВМ.
3.Диапазон представления чисел с фиксированной
запятой.
4.Представление чисел с плавающей точкой в ЭВМ в общем виде (в виде формулы).
5.Алгоритм нормализации числа с плавающей за-
пятой.
6.Алгоритм сложения чисел с плавающей запятой.
7.Алгоритм умножения чисел с плавающей запя-
той.
8.Перемножения двух чисел в случае, когда разрядная сетка результата соответствует разрядной сетке сомножителей.
9.Особенности перемножения чисел с плавающей
запятой.
28