Правила недесятичной арифметики. Числа с плавающей точкой

 

 


Арифметические операции над числами с плавающей точкой в ЭВМ обрабатываются в специальных блоках и хранятся в памяти парами – мантисса/порядок в нормализованном виде, причем мантиссы и порядки обрабатываются отдельно. Проведение операций сложения (вычитания) рассмотрим на примерах.

Пример 2.18. Сложение (вычитание) чисел A10 = +2.5 и B10 = -1.25

Представляем числа в двоичном коде A2 = 0|10.1 и B2 = 1/1.01.

Порядок А2 равен PA2 = 0|1. Мантисса А2 равна МA2 = 0|01.

Порядок B2 равен PB2 = 0|1. Мантисса B2 равна МB2 = 1|001.

При сложении (вычитании) чисел, которые имеют одинаковые порядки исходных чисел, как в данном примере, их мантиссы складываются (вычитаются), а результату присваивается их общий порядок. Для сложения необходимо произвести выравнивание порядков мантисс, т.е. МA2 = 0|010. Затем получим дополнительный код второго слагаемого [B2]доп = 1|111. Произведем операцию сложения мантисс :



Порядок результата PR2 = 0|1, а мантисса МR2 = 0|001. Т.е. R10 = +0.125 · 101 = 1.25.

Пример 2.19. Сложение (вычитание) чисел A10 = +1.25 и B10 = -0.75

Представляем числа в двоичном коде A2 = 0|1.01 и B2 = 1/0.11.

Порядок А2 равен PA2 = 0|1. Мантисса А2 равна МA2 = 0|101.

Порядок B2 равен PB2 = 0|0. Мантисса B2 равна МB2 = 1|11.

При сложении (вычитании) чисел, которые имеют не одинаковые порядки исходных чисел, как в данном примере, то порядки чисел сначала выравниваются, для этого число с меньшим порядком сдвигается вправо на разницу порядков. Поэтому сдвигаем второе число вправо на единицу МB2’ = 1|011. Порядок результата берется равным порядку большего числа, т.е. в данном случае PR2 = 0|1. Для сложения необходимо получить дополнительный код второго слагаемого [B2’]доп = 1|101. Произведем операцию сложения мантисс :



Мантисса результат МR2 = 0|010, т.к. мантисса числа не нормализована11, сдвигаем его на один разряд влево и вычитаем из порядка единицу. PR2 = 0|0, а мантисса МR2 = 0|10 R10 = +0.5 · 100 = 0.5.

Операции умножения (деления) чисел с плавающей точкой производятся аналогично сложению и вычитанию раздельно над порядками и мантиссами. Имеется несколько общих правил умножения (деления) чисел с плавающей точкой. Во-первых, при умножении (делении) порядки складываются (вычитаются), как мы и привыкли в десятичной системе счисления. Во-вторых, мантиссы перемножаются (делятся). И, наконец, знак произведения (частного) формируется сложением знаковых разрядов сомножителей (делимого и делителя) по модулю два12. Рассмотрим примеры операций умножения (вычитания).

Пример 2.20. Умножение чисел A10 = +1.5 и B10 = -2

Представляем числа в двоичном коде A2 = 0|1.1 и B2 = 1/10.

Порядок А2 равен PA2 = 0|1. Мантисса А2 равна МA2 = 0|11.

Порядок B2 равен PB2 = 0|1. Мантисса B2 равна МB2 = 1|10.

Порядок произведения PR2 = PA2 + PB2 = 1 + 1 = 2.

Мантисса произведения МR2 = МA2 · МB2 = 11 ·10 = 110.

Определим знак произведения 0 + 1 = 1.

Тогда R2 = 1|110 · 102 = 1|11.0 или R10 =-3.

Результат, переведенный в десятичную систему счисления, совпадает с результатом, который можно получить, если перемножить A10 и B10.

Пример 2.21. Деление чисел A10 = +15 и B10 = -5

Представляем числа в двоичном коде A2 = 0|1111 и B2 = 1/101.

Порядок А2 равен PA2 = 0|2. Мантисса А2 равна МA2 = 0|1111.

Порядок B2 равен PB2 = 0|1. Мантисса B2 равна МB2 = 1|101.

Порядок частного PR2 = PA2 - PB2 = 2 - 1 = 1.

Мантисса частного МR2 = МA2 · МB2 = 1111 / 1010 = 1.1

Определим знак частного 0 + 1 = 1.

Тогда R2 = 1|1.1 · 101 = 1|11 или R10 =-3.

Результат, переведенный в десятичную систему счисления, совпадает с результатом, который можно получить, если разделить A10 на B10.


Лекция добавлена 28.02.2013 в 03:22:41