Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к экзамену.docx
Скачиваний:
50
Добавлен:
28.06.2021
Размер:
681.96 Кб
Скачать

Вопрос 6 Арифметика чисел с плавающей запятой. Погрешности представления.

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

Математически это записывается так:

(-1)s × M × BE, где s — знак, B-основание, E — порядок, а M — мантисса.

Основание определяет систему счисления разрядов. Математически доказано, что числа с плавающей запятой с базой B=2 (двоичное представление) наиболее устойчивы к ошибкам округления, поэтому на практике встречаются только базы 2 и, реже, 10. Для дальнейшего изложения будем всегда полагать B=2, и формула числа с плавающей запятой будет иметь вид:

(-1)s × M × 2E

Что такое мантисса и порядок? Мантисса – это целое число фиксированной длины, которое представляет старшие разряды действительного числа. Допустим наша мантисса состоит из трех бит (|M|=3).

Возьмем, например, число «5», которое в двоичной системе будет равно

1012. Старший бит соответствует 22=4, средний (который у нас равен нулю) 21=2, а младший 20=1. Порядок – это степень базы (двойки) старшегоразряда. В нашем случае E=2. Такие числа удобно записывать в так называемомстандартном виде, например «1.01e+2». Сразу видно, что мантисса состоит из трех знаков, а порядок равен двум.

Вопрос 7 Умножение двоичных чисел.

Арифметические действия в двоичной системе производится по тем же правилам что и в десятичной системе счисления. Однако так как в двоичной системе счисления используются только две цифры 0 и 1, то арифметические действия выполняются проще, чем десятичной системе.

Умножение в двоичной системе производится по тому же принципу что и в десятичной системе счисления, при этом используется таблица двоичного умножения: 0 * 0 = 0                     0 * 1 = 0                     1 * 0 = 0                     1 * 1 = 1 .

Пример

     Как видно из приведенных примеров, операция умножения может быть представлена как операции сдвига и суммирования.

Умножение младшими разрядами вперед.

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

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