Сложение (вычитание) двоичных чисел с плавающей запятой

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

Операция сложения (вычитания) чисел с плавающей запятой производится следующим образом.

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

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

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

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

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

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

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

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

Пример (первый случай).

Слагаемые: Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Требуется найти Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru , т.е найти Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru и Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru .

Первый шаг.

Уравнивание порядков слагаемых, т.е. денормализация слагаемого Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru , чтобы его порядок стал равен + 101.

После уравнивания Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru .

Второй шаг.

Перевод мантисс обоих слагаемых в модифицированный обратный код

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Третий шаг.

Сложение мантисс

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

+
Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru .

Четвертый шаг.

Перевод мантиссы суммы в прямой код Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru .

Результат операции сложения Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru .

Пример (второй случай).

Слагаемые: Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Требуется найти Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru , т.е найти Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru и Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru .

Будем производить вычисление в модифицированном обратном коде.

Уравнение порядков в данном примере не требуется.

Первый шаг.

Перевод мантисс слагаемых в модифицированный обратный код

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Второй шаг.

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru Сложение мантисс слагаемых Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Третий шаг.

Перевод мантиссы суммы в прямой код

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru .

Произошла денормализация вправо на три разряда.

Четвертый шаг.

Устранение денормализации путем сдвига прямого кода мантиссы суммы на три разряда влево и вычитания из первоначального порядка суммы трех единиц. Вычитание производится в модифицированном дополнительном или в модифицированном обратном коде

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Результат операции сложения

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Пример (третий случай).

Слагаемые: Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Требуется найти Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru , т.е найти Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru и Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru .

Будем производить вычисления в модифицированном обратном коде.

Первый шаг.

Уравнение порядков слагаемых

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru .

Второй шаг.

Перевод мантисс слагаемых в модифицированный обратный код

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Третий шаг.

Сложение мантисс слагаемых

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

+
1 10,111011101

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

10,111011110

Произошло переполнение разрядной сетки (денормализация влево), т.к. в знаковых разрядах мантиссы суммы оказались разные знаки.

Четвертый шаг.

Устранение переполнения (нормализация) путем сдвига мантиссы суммы на один разряд вправо и прибавления единицы к первоначально полученному порядку суммы в модифицированном дополнительном или в модифицированном обратном коде.

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Пятый шаг.

Перевод мантиссы суммы в прямой код

Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Результат операции сложения Сложение (вычитание) двоичных чисел с плавающей запятой - student2.ru

Наши рекомендации