Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Системы счисления.doc
Скачиваний:
35
Добавлен:
15.02.2016
Размер:
270.34 Кб
Скачать

Арифметические операции с числами в формате с плавающей запятой

Сложение и вычитание

Производятся в несколько этапов:

  1. Выравниваются порядки чисел в сторону большего (чтобы не получить мантиссы > 1)

  2. Складываются мантиссы. Для представления отрицательных чисел ис­поль­зуется модифицированный дополнительный код. Порядок суммы бу­дет равен общему порядку слагаемых.

  3. Нормализуется результат: порядок и мантисса изменяются так, чтобы пер­вая значащая цифра результата попала в первый разряд после запятой.

Пример 1:Вычесть из числаA= 20.0 числоB= 11.0.

A= 20 = 101002= .101 * 25= .101 * 10101 (все числа –двоичные)

B= 11 = 10112= .1011 * 24 = .1011 * 10100

Процессор для определения разности порядков вычитает из порядка числа Aпорядок числаBи получает 1. Т.к. порядок числаAна единицу больше порядка числаB, порядок числаBувеличивается на 1 и мантисса при этом сдвигается на 1 разряд вправо относительно точки:

B = .01011 * 10101

Мантисса числа Bдолжна быть записана как отрицательное число (нуж­но выполнить вычитание):

B = -010110…0 = 1|101001…1 = 1|101010…0

Обратный код Дополнительный

Сложение мантисс в модифицированном дополнительном коде:

00| 1010 00…0 (число A)

+ 11| 1010 10…0 (число B)

1| 00| 0100 10…0 (сумма, порядок = 1012)

Произошло нарушение нормализации.

Нормализация результата: мантисса сдвигается влево, порядок уменьша­ется: A - B = .1001* 10100 = 10012 = 9.0

Пример 2:СложитьA= 5.0 иB= 28.0.

A= 5 = 1012= .101 * 25= .101 * 1011 (все числа –двоичные)

B= 28 = 111002= .111 * 25= .111 * 10101

Процессор для определения разности порядков вычитает из порядка числа Aпорядок числаBи получает -2. Т.к. порядок числаAна 2 меньше порядка числаB, порядок числаAувеличивается на 2 и мантисса при этом сдвигается на 2 разряда вправо относительно точки:

A= .00101 * 10101

Сложение мантисс в модифицированном коде:

00| 0010 10…0 (число A)

+ 00| 1110 00…0 (число B)

01| 0000 10…0 (сумма, порядок = 1012)

Произошло нарушение нормализации.

Нормализация результата: мантисса сдвигается вправо, порядок увеличивается: A + B = .100001* 10110 = 1000012 = 33.0

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

Умножение и деление

При умножении чисел в формате с плавающей запятой порядки склады­ва­ют­ся, а мантиссы перемножаются, затем результат нормализуется.

При делении из порядка делимого вычитается порядок делителя, а ман­тисса делимого делится на мантиссу делителя, затем результат нормализует­ся.

Двоично-десятичное кодирование информации

Двоично-десятичный код — ( binary-coded decimal [BCD] ) форма записи целых чисел, когда каждый десятичный разряд числа записывается в виде его четырёхбитного двоичного кода (вместо каждой десятичной цифры за­пи­сы­ва­ют ее двоичное значение). Например, десятичное число 310 будет за­пи­сано в двоичном коде как 1001101102, а в двоично-десятичном коде как 0011 0001 0000BCD.