Арифметические операции над двоичными числами с плавающей точкой — КиберПедия 

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

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

2018-01-13 458
Арифметические операции над двоичными числами с плавающей точкой 0.00 из 5.00 0 оценок
Заказать работу

 

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

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

1. Сравниваются порядки (характеристики) исходных чисел путем их вычитания . При выполнении этой операции определяется, одинаковый ли порядок имеют исходные слагаемые.

2. Если разность порядков равна нулю, то это значит, что одноименные разряды мантисс имеют одинаковые веса (двоичный порядок). В противном случае должно проводиться выравнивание порядков.

3. Для выравнивания порядков число с меньшим порядком сдвигается вправо на разницу порядков . Младшие выталкиваемые разряды при этом теряются.

4. После выравнивания порядков мантиссы чисел можно складывать (вычитать) в зависимости от требуемой операции. Операция вычитания заменяется операцией сложения в соответствии с данными табл.2.1. Действия над слагаемыми производятся в ОК или ДК по общим правилам.

5. Порядок результата берется равным большему порядку.

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

Пример.

Сложить два числа A10 = +1.375; B10 = - 0.625

А2= +1.011 = 0: 1011*101; B2 = - 0.101 = - 0: 101*100.

В нормализованном виде эти числа будут иметь вид:

Порядок Мантисса

[A2]п = 0: 1 0: 1011 - для числа А10

знак числа

[B2]п =0: 0 1: 101 - для числа В10

1. Вычитаем порядки = 1- 0 = 1. В машине эта операция требует операции сложения с преобразованием порядка чисел в дополнительный код:

Определяем, что

2. Порядок первого числа больше порядка второго числа на единицу. Требуется выравнивание порядков.

3. Для выравнивания порядков необходимо второе число сдвинуть вправо на один разряд:

2]исх = 0: 0 1: 101

после сдвига

2/]п = 0: 1 1: 0101

[m/B]дк = 1: 1011

4. Складываем мантиссы:

[mA]дк = 0: 1011

+ [m/B]дк = 1: 1011

[mC]дк = 0: 0110

Мантисса числа С - положительная.

5. Порядок числа С равен порядку числа с большим порядком, т.е. pс = +1

2]п = 0: 1 0: 0110.

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

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

2]п = 0: 0 0: 110;

С10 = + 0.75.

Пример сложения:

Сложить двоичные дроби 1011,12 и 10,1012.

              (переносы)
        ,1     (первое число)
+       ,1     (второе число)
        ,0     (результат)

 

Выполняя проверку, находим:

1011,12 = 11,510, 10,1012 = 2,62510, 1110,0012 = 14,12510, 11,510 + 2,62510 = 14,12510, значит, в вычислениях ошибок нет.

Пример вычитания: Выполнить вычитание дробных двоичных чисел 10,11 и 110,101.

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

  . .   .     (займы)
              (уменьшаемое)
              (вычитаемое)
              (разность)

 

Так как числа вычитаются наоборот, то результат должен быть отрицательным: 10,11 – 110,101 = -11,001. В ходе проверки устанавливается, что:

10,112 = 2,7510, 110,1012 = 6,62510, -11,0012 = -3,87510, 2,7510 – 6,62510 = -3,87510, т. е. вычисления произведены без ошибок.

Умножение (деление).

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

1. При умножении (делении) порядки складываются (вычитаются) так, как это делается над числами с фиксированной точкой.

2. При умножении (делении) мантиссы перемножаются (делятся).

3. Знаки произведения (частного) формируются путем сложения знаковых разрядов сомножителей (делимого и делителя). Возможные переносы из знакового разряда игнорируются.

 

Пример: Умножить дробные двоичные числа 11,1 и 10,011.

Запишем числа друг под другом, выровненные по правому краю и без двоичных запятых:

  ×             (первый множитель без двоичной запятой)
                (второй множитель без двоичной запятой)
                (переносы сложения)
                (число, полученное умножением единицы 10,011 на первое число)
                (число, полученное умножением единицы 10,011 на первое число)
                (число, полученное умножением единицы 10,011 на первое число)
                (результат без учета двоичной запятой)

 

Поскольку в двух исходных числах справа от их запятых находится в совокупности 4 знака, то и в результате нужно отделить 4 знака после двоичной запятой, т. е. реальным результатом умножения этих двух чисел является 11,12 . 10,0112 = 1000,01012.

Действительно,

11,12 = 3,510, 10,0112 = 2,37510, 1000,01012 = 8,312510, 3,510 . 2,37510 = 8,312510, что подтверждает правильность вычислений.

Пример: Произвести деление двоичных чисел 1111 и 100 с остатком.

             
             
             
             
             

 

Другими словами, 1111/100 = 1111/100, или, поскольку знаменатель выражен числом 2 в натуральной степени, 11,11.

Действительно, при проверке видим, что:

11112 = 1510, 1002 = 410, 112 = 310, 1510: 410 = (33/4)10 = 3,7510 и, таким образом, деление выполнено правильно.

Пример: Разделить двоичные числа 1111 и 100 и выразить результат двоичной дробью.

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

               
            ,1  
               
               
               
               
               
               
               

Проверка данных вычислений приведена в предыдущем примере.

 

 


Поделиться с друзьями:

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.017 с.