Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsia1 (1).doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
7 Мб
Скачать
☆

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

Для выполнения действий над числами, представленными в форме с плавающей запятой, в АУ (арифметических устройствах) необходимы дополнительные схемы, оперирующие с порядками. Операции над порядками производятся как с целью опре­деления порядка результата, так и для подготовки мантисс, например, к сложению и вычитанию. При сложении порядки и мантиссы, представляющие числа в форме с пла­вающей запятой, в ЗУ обычно хранятся в прямом коде. При выборке слагаемых из ЗУ их мантиссы и порядки разделяются и поступают в соответствующие схемы АУ. В схеме, оперирующей порядками, они сравниваются.

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

и

то есть и

Если выполняются операции с автоматической нормализацией, то по окончании сложения сумма нормализуется. Таким образом, сложение чисел с разными поряд­ками состоит из трех этапов:

  1. Выравнивание порядков слагаемых;

  2. Сложение мантисс;

  3. Нормализация результата.

Мантиссы слагаемых с выравненными порядками складываются аналогично сложению чисел с фиксированной запятой. Для представления отрицательных мантисс используются дополнительный или обратный код. При алгебраическом сложении ман­тисс возможны случаи получения результата, меньшего 0.1... (двоичное число). Такие случаи называются нарушением нормализации вправо. Признаком такого нарушения нормализации чисел, представленных в любом коде (прямом, дополнительном или об­ратном) является наличие одинаковых цифр 0*.0 или 1*.1 в двух разрядах слева и справа от запятой. При сложении мантисс по абсолютной величине меньших единицы, возможны случаи переполнения разрядной сетки сумматора мантисс, называемые на­рушением нормализации влево. Если применяются модифицированные коды, то при­знаком нарушения нормализации влево служит появление разных цифр 01* или в 10* в знаковых разрядах. Результат нормализуется путем сдвига мантиссы в нужную сто­рону и коррекции порядка суммы.

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

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

Результат сложения может превысить максимально возможное число, которое может быть представлено в компьютере. Это обнаруживается как возникновение порядка, превы­шающего после нормализации результата максимально допустимый (например, при сдвиге мантиссы вправо и при прибавлении единицы к порядку). В таких случаях в АУ вырабатыва­ется сигнал, вызывающий прерывание исполняемой программы. По команде ВЫЧЕСТЬ вы­читание чисел с разными порядками, как и сложение, производится в три этапа:

1. Выравнивание порядков;

2. Вычитание мантисс;

3. Нормализация результата.

При вычитании мантисс в АУ искусственно меняется знак вычитаемого на об­ратный. Это позволяет операцию вычитания формально свести к операции сложения.

Рассмотрим следующий пример: пусть требуется вычесть из числа число . Тогда характеристики

, .

Запишем коды мантиссы и характеристики слагаемого — (так как ). Для вычитаемого — (используем модифицированные коды).

Далее выравниваются характеристики слагаемых, то есть из характеристики вычитается характеристика . Вычитание заменяется сложением с дополнением .

1

1*

0

1

0

0

+

0

0*

1

1

0

1

1

0

0*

0

0

0

1.

Так как больше на единицу, то производится сдвиг вправо на один раз­ряд мантиссу . Складываем мантиссы.

0

0*

.0

1

1

0

+

1

1*

.0

0

1

1

1

1*

.1

0

0

1.

Переноса из знакового разряда не происходит, то есть результат получен в дополни­тельном коде (отрицательный). Перевод в прямой код дает следующий результат: .

Прервод в десятичную систему даст следующий результат .Убедимся, что это действительно так.

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

В данном примере имеет место нарушение нормализации вправо. . Сло­жение мантисс дает следующий результат

0

0*

.0

1

1

0

+

0

0*

.1

1

0

1

0

1*

.0

0

1

1.

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

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

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

1. Определение знака произведения путем сложения по mod 2 знаковых разря­дов мантисс сомножителей;

2. Определение порядка произведения;

3. Перемножение мантисс;

4. Нормализация результата.

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

, , ,

, , .

Вычислим характеристику произведения

0*

1

0

1

0

1

+

1*

1

0

0

0

0

1

0*

0

0

1

0

1

и

0*

0

0

1

0

1

+

0*

1

0

1

0

0

0*

1

1

0

0

1.

Находим произведение мантисс:

Разряды произведения

Множитель

Содержимое сумматора перед началом

0*.00000

+

0*.10001

1

Первая сумма частных произведений 1

=

0*.10001

Сдвиг 1 на один разряд вправо

0*.01000

1

Сдвиг 1 на один разряд вправо

0*.00100

01

0

+

0*.10001

Вторая сумма частных произведений 2

=

0*.10101

1

Сдвиг 2 на один разряд вправо

0*.01010

101

Сдвиг 2 на один разряд вправо

0*.00101

0101

0

+

0*.10001

1

Третья сумма частных произведений 3

=

0*10110

Сдвиг 3 на один разряд вправо

0*.01011

00101

Знак произведения 0 1=1

Окончательный результат

1*.01011

00101

В данном случае имеет место нарушение нормализации вправо, следовательно необхо­димоуменьшить на единицу характеристику: . Истинный порядок ра­вен

0*

1

1

0

0

0

+

1*

1

0

0

0

0

1

0*

0

1

0

0

0.

Результат операции . Как и в предыдущих случаях проведем проверку. В десятичной системе:

.

С другой стороны,

, и произведение

.

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

1. Определение знака частного;

2. Определение порядка частного;

3. Деление мантисс;

4. Нормализация результата.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]