Элективный курс для предпрофильной подготовки девятиклассников «Машинная арифметика»


НазваниеЭлективный курс для предпрофильной подготовки девятиклассников «Машинная арифметика»
страница9/9
Дата10.11.2012
Размер0.59 Mb.
ТипЭлективный курс
1   2   3   4   5   6   7   8   9

Вещественная арифметика


Пусть , – два нормализованных двоичных числа, и (в противном случае мы можем просто поменять их местами). Результатом их сложения или вычитания будет являться следующее выражение: .

Порядок вычислений при этом таков:

  1. Порядки чисел a и b выравниваются по большему из них (в нашем случае это qa). Для этого мантисса числа b сдвигается на qa-qb разрядов вправо(часть значащих цифр при этом могут оказаться утерянными), а его порядок становится равным qa.

  2. Выполняется операция сложения (вычитания) над мантиссами с округлением по значению n+1-ой значащей цифры результата.

  3. Мантисса результата должна быть нормализована (получившийся после нормализации порядок может отличаться от qa как в меньшую, так и в большую сторону).

Все последующие упражнения будем выполнять в двоичной системе счисления без перевода в машинное представление!

Упражнение 31. Сложите два числа с плавающей запятой в двоичной системе счисления: и .

Решение.

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

+0,00000000111×10101







0,10010000000×10101







0,10010000111×10101







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

Упражнение 32. Продумайте, какие ошибки могут возникнуть при вычислении по данному алгоритму. Приведите примеры.

Ответ.

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

  2. Потеря крайней справа значащей цифры результата при сложении или вычитании мантисс.

  3. Выход за границу допустимого диапазона значений того или иного вещественного типа при нормализации результата.

Рассмотрим теперь умножение и деление нормализованных чисел a и b в машинной арифметике (с ограниченным числом разрядов):



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

  1. Мантиссы перемножаются (или одна делится на другую), при этом результат округляется до n значащих цифр (отметим, что при умножении может получиться 2n значащих цифры в мантиссе, а при делении – бесконечно много).

  2. Порядки при умножении складываются, а при делении вычитаются.

  3. При необходимости мантисса результата нормализуется.

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

Упражнение 33. Выполнить умножение двух нормализованных двоичных числа, пользуясь алгоритмом машинной арифметики: и .

Решение.

Складываем порядки этих чисел: 10111=01.

Перемножаем мантиссы:

×0,1001







0,111







0,0111111







В результате получили число: . Приведем мантиссу в нормализованный вид: .

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

Упражнение 34. Выполнить деление двух нормализованных двоичных числа, пользуясь алгоритмом машинной арифметики: разделить на .

Решение.

Найдем порядок результата: 101-(-11)=101+11=1000.

Делим мантиссы (столбиком!): . Мантисса получилась нормализованной, но(!) периодической. Что же делать?

Когда говорят о точности представления десятичных вещественных чисел, нужно помнить следующее: десятичное число невозможно записать точно в любом из машинных вещественных типов. Объясняется это тем, что конечные десятичные дроби часто оказываются бесконечными периодическими двоичными дробями (см. упражнения по переводу правильных дробей из десятичной системы счисления в двоичную). Следовательно, в нормализованном виде такое число будет иметь бесконечную мантиссу и не может быть представлено точно. При записи подобной мантиссы в память компьютера число округляется.

Если под мантиссу отведено n бит и n+1 значащая цифра двоичной нормализованной мантиссы равна 0, то цифры начиная с n+1-ой просто отбрасываются, если же n+1-ая цифра равна единице, то к целому числу, составленных из n значащих цифр мантиссы, прибавляется единица.

Упражнение 35. Найдите значение мантиссы числа a=0,110 при двоичной нормализации для различных значений n (разрядности мантиссы).

Решение.



Пусть n=10, тогда m=1100110011 (остальные цифры мантиссы отброшены в результате округления).

Пусть n=12, тогда m=110011001101 (последняя цифра изменилась с 0 на 1 при округлении).

Пусть n=13, тогда m=1100110011010 (две последние цифры изменились при прибавлении 1).

Упражнение 36. Подумайте, какие ошибки могут возникнуть при умножении и делении чисел в формате с плавающей запятой.

Ответ. Получение не представимого в используемом формате порядка числа, как положительного, так и отрицательно. Это так называемая ситуация «арифметического переполнения».

Итоговые творческие задания


Упражнение 37. Напишите программу, переводящую число из любой системы счисления в любую другую.

Упражнение 38. Напишите программу, которая переводит десятичное число в машинное представление с плавающей запятой (короткое вещественное).

Упражнение 39. Напишите программу, иллюстрирующую умножение двух знаковых целых числа.

Упражнение 40. Напишите программу, иллюстрирующую нормализацию вещественных чисел и выполнения действий над ними по правилам машинной арифметики.

Упражнение 41. Напишите программу, иллюстрирующую ошибки компьютера при выполнении действий над вещественными числами.





Формат

Общая длина (байт)

Знак мантиссы (бит)

Порядок (бит)

Мантисса (бит)

Смещение порядка

Диапазон представимых чисел

Точность в десятичной системе счисления

Особенность представления

Короткое вещественное

4

1

8

23

12710

10-42…1038

7 – 8 цифр

неявный бит F0

Длинное вещественное

8

1

10

53

102310

10-324…10308

15 – 16 цифр

неявный бит F0

Временное вещественное

10

1

15

64

1638310

10-4951…104932

19 – 20 цифр

явный бит F0

Литература


  1. Григорьев В.Л. Архитектура и программирование арифметического сопроцессора. – М.: Энергоатомиздат, 1991.

  2. Андреева Е., Фалина И. Информатика: Системы счисления и компьютерная арифметика. – М.: Лаборатория Базовых Знаний, 1999.

  3. Немнюгин С.А. Turbo Pascal. – СПб.: Питер, 1999.
1   2   3   4   5   6   7   8   9

Похожие:

Разместите кнопку на своём сайте:
cat.convdocs.org


База данных защищена авторским правом ©cat.convdocs.org 2012
обратиться к администрации
cat.convdocs.org
Главная страница