Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


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



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

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

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.

Преимущества и недостатки

Преимущества

· Упрощён вывод чисел на индикацию — вместо последовательного деле­ния на 10 требуется просто вывести на индикацию каждый полубайт. Аналогично, проще ввод данных с цифровой клавиатуры.

· Для дробных чисел (как с фиксированной, так и с плавающей запятой) при переводе в человекочитаемый десятичный формат и наоборот не те­ряется точность.

· Упрощены умножение и деление на 10, а также округление.

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

Недостатки

  • Усложнены арифметические операции.
  • Требует больше памяти.
  • В двоично-десятичном коде BCD существуют запрещённые комбинации битов:

Запрещённые в BCD битовые комбинации:

1010 1011 1100 1101 1110 1111


Запрещённые комбинации возникают обычно в результате операций сложе­ния, так как в BCD используются только 10 возможных комбинаций 4-х битового поля вместо 16. Поэтому, при сложении и вычитании чисел фор­ма­та BCD действуют следующие правила:

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

Пример операции сложения двоично-десятичных чисел:

Требуется: Найти число A = D + C, где D = 3927, C = 4856

Решение: Представим числа D и C в двоично-десятичной форме: D = 3927 = 0011 1001 0010 0111 C = 4856 = 0100 1000 0101 0110

Суммируем числа D и С по правилам двоичной арифметики:


 

* ** 0011 1001 0010 0111+ 0100 1000 0101 0110 ___________________= 1000 0001 0111 1101 - Двоичная сумма+ 0110 0110 - Коррекция ___________________ 1000 0111 1000 0011

'*' — тетрада, из которой был перенос в старшую тетраду

'**' — тетрада с запрещённой комбинацией битов

В тетраду, помеченую символом *, добавляем шестёрку т.к по правилам дво­ичной ариф­метики перенос унёс с coбой 16, а по правилам десятичной ариф­метики должен был унести 10. В тетраду, помеченую символом **, до­ба­в­ля­ем шестёрку, так как комбинация битов 1101 (что соответствует десятичному чис­лу 13) является запрещённой.

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-07-12; Просмотров: 1557; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.012 с.)
Главная | Случайная страница | Обратная связь