Сложение чисел с плавающей точкой

Необходимым условием выполнения этой операции является соответствие разрядов мантисс складываемых чисел, что достигается выравниванием их порядков путем сдвига мантиссы меньшего числа вправо на количество разрядов, равное АР= РЛ – Р1 После каждого сдвига порядок увеличивается на единицу. После выравнивания порядков производится алгебраическое сложение мантисс по правилам для чисел с фиксированной точкой. Порядок результата принимается равным порядку большего слагаемого. В процессе суммирования чисел с разными знаками может нарушиться нормализация результирующей

Получение обратного кода числа -548 и дополнительного кода числа -278

Рис. 2.9. Получение обратного кода числа -548 и дополнительного кода числа -278

Примеры алгебраического сложения десятичных чисел в обратном и дополнительном кодах

Рис. 2.10. Примеры алгебраического сложения десятичных чисел в обратном и дополнительном кодах

Преобразование результата из обратного кода в прямой

Рис. 2.11. Преобразование результата из обратного кода в прямой

мантиссы. В этом случае полученный результат нормализуется путем сдвига мантиссы результата влево. После каждого сдвига влево порядок результата уменьшается на единицу.

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

Пример 2.20. Сложение нормализованных чисел А = 0,1010111 х х 2 1 и В = 0,1101101 х 22.

Число В> А, разность порядков слагаемых Рд- Рл = 3, поэтому мантисса числа А сдвигается на три разряда вправо (0,0001010 – потеряны три младших разряда), принимается Рл = 2, после чего выполняется сложение

Пример 2.21. Алгебраическое сложение (вычитание) нормализованных чисел с разными знаками А = +0,1010101 х 21 и /1 = -0,1110101 х 2°.

Разность порядков РАВ = 1, поэтому модуль мантиссы числа В сдвигается на один разряд вправо (0,0111010 – младший разряд теряется), порядок Рд принимается равным единице, мантисса числа В представляется дополнительным кодом (1,1000101+ 0,0000001 = 1,1000110), после чего выполняется сложение мантисс

В знаковом разряде 0, поэтому результат положительный и алгебраическая сумма С = +0,0011011 х 21. Выполнив нормализацию суммы путем сдвига на два разряда влево, получим С = +0,1101100x2-'.

Пример 2.22. Алгебраическое сложение (вычитание) нормализованных чисел из примера 2.21 с измененными знаками па обратные: Л = -0,1010101 х 2' нВ = +0,1110101 х 2°.

Разность порядков Рл – Рв = 1, поэтому модуль мантиссы числа В также сдвигается на один разряд вправо (0,0111010 – младший разряд теряется), порядок Рв принимается равным единице. Здесь мантисса отрицательного числа Л представляется дополнительным кодом (1,0101010 + 0,0000001 = 1,0101011), после чего выполняется сложение мантисс

В знаковом разряде 1, поэтому результат отрицательный. Используя операцию дополнительного кода, определяем модуль мантиссы: 0011010+ 1 =0011011. Получаем алгебраическую сумму (с учетом знака) С = -0,0011011 х 2'. Выполнив нормализацию суммы путем сдвига влево на два разряда, получим окончательно С= -0,1101100x2-'.

 
< Пред   СОДЕРЖАНИЕ     След >