Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы1.doc
Скачиваний:
61
Добавлен:
15.06.2014
Размер:
2.65 Mб
Скачать

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

При вычислительных операциях с плавающей запятой двоичные числа представляются в виде мантиссы с её знаком, которая по модулю строго меньше единицы, и порядка с его знаком, который может быть равен нулю или любому (в пределах отведенного числа разрядов) целому числу, т.е. N=±m*10±p .

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

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

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

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

Слагаемые: X (mx = -0,100100110; px = +011); Y(my = +0,110001101; py = +101);

  1. Уравнивание порядков слагаемых, т.е. денормализация слагаемого X, чтобы его порядок стал равен +101:

X (mx = -0,001001001; px = +101).

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

[mx] Mob =11,110110110; [my] Mob=00,110001101.

  1. Сложение мантисс: [mx] Mob =11,110110110

[my] Mob=00,110001101

1 00,101000011

+1

[mz]Mob=[mx]Mob+[my]Mob=00,101000100.

  1. Перевод мантиссы суммы в прямой код [mz]пр=0,101000100.

  2. Результат операции сложения Z=X+Y (mz = +0,101000100; pz = +101).

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

  2. но результат после перевода мантиссы суммы в прямой код оказался ненормализованным.

  3. В этом случае производится нормализация результата сложения,

  4. т.е. мантисса суммы сдвигается на соответствующее число разрядов влево,

  5. а порядок суммы уменьшается на такое же число.

Слагаемые: X (mx = -0,11101010; px = +101); Y(my = +0,11010101; py = +010);

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

  1. Перевод мантисс слагаемых в модифицированный обратный код: [mx] Mob =11,00010101; [my] Mob=00,11010101.

  2. Сложение мантисс слагаемых:[mx] Mob =11,00010101

[my] Mob= 00,11010101

[mz]Mob=[mx]Mob+[my]Mob=11,11101010.

  1. Перевод мантиссы суммы в прямой код: [mz]пр=1,00010101.

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

  1. Устранение денормализации путем сдвига прямого кода мантиссы суммы на три разряда влево

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

  3. Вычитание производится в модифицированном дополнительном или модифицированном обратном коде: [mz]пр=1,10101000; pz = -001. Результат: Z=X+Y (mz = -0,1010100; pz = -001)

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

Слагаемые: X (mx = -0,101011011; px = +110); Y(my = -0,110001101; py = +101);

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

  1. Уравнение порядков слагаемых Y (my = -0,011000110; py = +110).

  2. Перевод мантисс слагаемых в модифицированный обратный код: [mx] Mob =11,010100100

[my] Mob= 11,100111001

  1. Сложение мантисс слагаемых: [mx] Mob =11,010100100

[my] Mob=11,100111001

1 10,111011101

+1

10,111011110

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

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

[mz]Mob=[mx]Mob+[my]Mob=11,011101111; pz = +111.

  1. Перевод мантиссы суммы в прямой код: [mz]пр=1,100010000. Результат операции сложения Z=X+Y

(mz = -0,100010000; pz = +111).

Соседние файлы в предмете Дискретная математика