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

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

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

1. Слагаемые представляются в формате с плавающей точкой.

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

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

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

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

6. Выравнивается разрядная сетка мантисс слагаемых путем дописывания незначащих нулей справа. Мантиссы слагаемых представляются в обратном или дополнительном модифицированном коде. Операция вычитания заменяется операцией сложения с отрицательным числом. Операция суммирования мантисс выполняется по правилам суммирования чисел в формате с фиксированной точкой.

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

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

1) цифры в знаковых разрядах не совпадают;

2) цифры знакового разряда совпадают с цифрой старшего разряда мантиссы.

 

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

Если цифры в знаковых разрядах не совпадают, то мантисса сдвигаетсяна один разряд вправо, а порядок увеличивается на на единицу.

7. Результат переводится в прямой код, к нему приписывается общий порядок слагаемых и выполняется округление мантиссы результата.

 

Пример 1. А10 =6,25, В10=20,5

 

1. Записываем числа в двоичном коде:

А2=110,01 В2=10100,1

 

2. Записываем числа в в формате с плавающей запятой

[А]пр = 0 011 0 11001

[В]пр= 0 101 0 101001

3. Сравниваем порядки:

рав=010

Разность порядков не равна нулю, производим выравнивание порядков и корректируем мантиссу

[А]пр = 0 101 0 0011001

[В]пр= 0 101 0 101001

4. Выравниваем разрядную сетку мантиссы:

[А]пр = 0 101 0 0011001

[В]пр= 0 101 0 1010010

5. Выполняем операцию сложения в дополнительном коде:

а]дп =00 0011001

+

в]дп =00 1010010

с]дп = 00 1101011

Мантисс не требует нормализации

6. Записываем результат в формате с плавающей запятой

0 101 0 1101011

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

С2= 11010,11 С10=16+8+2+0,5+0,25=26,75

 

Пример 2. А10 =36,5, В10=32,0

2. Записываем числа в двоичном коде:

А2=100100,1 В2=100000,0

 

2. Записываем числа в в формате с плавающей запятой

[А]пр = 0 110 0 1001001

[В]пр= 0 110 0 100100

4. Сравниваем порядки:

рав=000

Разность порядков равна нулю, коррекция не требуется.

4. Выравниваем разрядную сетку мантиссы:

[А]пр = 0 110 0 1001001

[В]пр= 0 110 0 1000000

8. Выполняем операцию сложения в дополнительном коде:

а]дп =00 1001001

+

в]дп =00 1000000

с]дп = 01 0001001

Необходима нормализация мантиссы, так как цифры в знаковых разрядах не совпадают. Выполняем сдвиг мантиссы вправо на один разряд, а порядок увеличиваем на единицу.

рав=111 с]дп = 00 10001001

 

9. Записываем результат в формате с плавающей запятой

0 111 0 10001001

 

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

С2= 1000100,1 С10=64+4+0,5=68,5

 

 

Пример 3. А10 =17,0, В10= -7,0

 

1. Записываем числа в двоичном коде:

А2=10001,0 В2=111,0

 

2. Записываем числа в в формате с плавающей запятой

[А]пр = 0 101 0 10001

[В]пр= 0 011 1 111

5. Сравниваем порядки:

рав=010

Разность порядков не равна нулю, требуется коррекция.

4. Выравниваем разрядную сетку мантиссы:

[А]пр = 0 101 0 10001

[В]пр= 0 101 1 00111

2. Выполняем операцию сложения в дополнительном коде:

а]дп =00 10001

+

в]дп =11 11001

с]дп = 00 01010

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

рав=100 с]дп = 00 1010

3. Записываем результат в формате с плавающей запятой

0 100 0 1010

 

4. Переводим результат в двоичный и десятичные коды С2= 1010 С10=8+2=10


<== предыдущая лекция | следующая лекция ==>
Законы алгебры логики | 




Дата добавления: 2016-10-17; просмотров: 5557;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.015 сек.