Умножение чисел в формате с плавающей запятой

Умножение чисел в формате с плавающей запятой

Правила ввода чисел

  1. Числа в десятичной системе счисления могут вводиться как без дробной, так и с дробной частью ( 234234.455 ).
  2. Числа в двоичной системе счисления состоят только из цифр 0 и 1 ( 10100.01 ).
  3. Числа в шестнадцатеричной системе счисления состоят из цифр 0 . 9 и букв A . F .
  4. Можно также получать обратное представление кода (из шестнадцатеричной системы счисления в десятичную, 40B00000 )

Пример №2 . Представить двоичное число 101.102 в нормализованном виде, записать в 32-битом стандарте IEEE754.
Решение.
Представление двоичного числа с плавающей точкой в экспоненциальном нормализованном виде.
Сдвинем число на 2 разрядов вправо. В результате мы получили основные составляющие экспоненциального нормализованного двоичного числа:
Мантисса M=1.011
Экспонента exp2=2
Преобразование двоичного нормализованного числа в 32 битный формат IEEE 754.
Первый бит отводится для обозначения знака числа. Поскольку число положительное, то первый бит равен 0
Следующие 8 бит (с 2-го по 9-й) отведены под экспоненту.
Для определения знака экспоненты, чтобы не вводить ещё один бит знака, добавляют смещение к экспоненте в половину байта +127. Таким образом, наша экспонента: 2 + 127 = 129
Переведем экспоненту в двоичное представление.
Оставшиеся 23 бита отводят для мантиссы. У нормализованной двоичной мантиссы первый бит всегда равен 1, так как число лежит в диапазоне 1 ≤ M 22 *0 + 2 21 *1 + 2 20 *1 + 2 19 *0 + 2 18 *0 + 2 17 *0 + 2 16 *0 + 2 15 *0 + 2 14 *0 + 2 13 *0 + 2 12 *0 + 2 11 *0 + 2 10 *0 + 2 9 *0 + 2 8 *0 + 2 7 *0 + 2 6 *0 + 2 5 *0 + 2 4 *0 + 2 3 *0 + 2 2 *0 + 2 1 *0 + 2 0 *0 = 0 + 2097152 + 1048576 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 = 3145728
В десятичном коде мантисса выражается числом 3145728
В результате число 101.10 представленное в IEEE 754 c одинарной точностью равно 01000000101100000000000000000000.
Переведем в шестнадцатеричное представление.
Разделим исходный код на группы по 4 разряда.
010000001011000000000000000000002 = 0100 0000 1011 0000 0000 0000 0000 0000 2
Получаем число:
0100 0000 1011 0000 0000 0000 0000 0000 2 = 40B0000016

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

Алгоритм сложения и вычитания чисел в формате с плавающей запятой:

Провести выравнивание порядков

Сложить или вычесть мантиссы.

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

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

Читайте также:  Размытие по бокам в фотошопе

Процедура нормализации: сдвиг мантиссы влево или вправо так, чтобы ее первая значащая цифра попала в первый разряд после запятой.

Алгоритм умножения чисел в формате с плавающей запятой:

1. Сложить порядки

2. Перемножить мантиссы

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

1. Из порядка делимого вычесть порядок делителя

2. Мантиссу делимого делить на мантиссу делителя.

Рассмотрим несколько примеров.

1. Произвести сложение чисел 0,1×2 3 и 0,1×2 5 в формате с плавающей запятой.

Решение. Произведем выравнивание порядков и сложение мантисс:

0,1×2 3 = Х×2 5 , Х=(0,1×2 3 )/ 2 5 =0,1×2 -2 =0,001

0,101×2 5 Ответ: 0,101×2 5

2. Произвести умножение чисел 0,1×2 3 и 0,1×2 5 в формате с плавающей запятой.

Решение: После умножения будет получено число 0,01×2 8 , которое после нормализации примет вид 0,1×2 7 . Ответ: 0,1×2 7 .

3. Произвести сложение, вычитание, умножение и деление чисел 0,1×2 2 и 0,1×2 -2 в формате с плавающей запятой.

Решение: Произведем выравнивание порядков и сложение мантисс:

0,1×2 -2 = Х × 2 2 , Х = ( 0,1×2 -2 )/ 2 2 = 0,1×2 -4 = 0,00001

0,10001×2 5

Произведем вычитание мантисс и процедуру нормализации:

0,01111×2 2 = 0,1111×2 1

Используем алгоритм умножения: сложим порядки и перемножим мантиссы.

0,000001 ×2 4 , нормализуем ответ 0,1×2 -1

Используем алгоритм деления чисел в формате с плавающей запятой: из порядка делимого вычесть порядок делителя, мантиссу делимого делить на мантиссу делителя.

10 000 ×2 0 , нормализуем ответ 0,1×2 5

Ответ: 0,10001×2 5 ; 0,1111×2 1 ; 0,1×2 -1 ; 0,1×2 5

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

Стандартные форматы представления вещественных чисел:

1) одинарный — 32-разрядное нормализованное число со знаком, 8-разрядным смещенным порядком и 24-разрядной мантиссой (старший бит мантиссы, всегда равный 1, не хранится в памяти, и размер поля, выделенного для хранения мантиссы, составляет только 23 разряда).

2) двойной — 64-разрядное нормализованное число со знаком, 11-разрядным смещенным порядком и 53-разрядной мантиссой (старший бит мантиссы не хранится, размер поля, выделенного для хранения мантиссы, составляет 52 разряда).

3) расширенный — 80-разрядное число со знаком, 15-разрядным смещенным порядком и 64-разрядной мантиссой. Позволяет хранить ненормализованные числа.

Читайте также:  Как включить компьютер через телефон андроид

Следует отметить, что вещественный формат с m-разрядной мантиссой позволяет абсолютно точно представлять m-разрядные целые числа, т. е. любое двоичное целое число, содержащее не более m разрядов, может быть без искажений преобразовано в вещественный формат.

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

В качестве примера приведем характеристики форматов вещественных чисел, используемых в персональных компьютерах:

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

1. Определяется знак произведения путем сложения по модулю два знаков сомножителей.

2. Определяется порядок произведения путем алгебраического сложения (с учетом знаков) порядков сомножителей по правилам сложения чисел с фиксированной запятой.

3. Определяется мантисса произведения путем умножения мантисс сомножителей по изложенным выше правилам для чисел с фиксированной запятой.

4. Нормализуется результат умножения мантисс сомножителей, если произошла денормализация.

Пример.

Множимое .

Множитель .

Требуется найти т.е. найти и .

Первый шаг.Определение знака произведения:

.

Второй шаг.Определение порядка произведения путем сложения порядков сомножителей в модифицированном дополнительном коде:

+

не учитывается

Третий шаг.Определение модуля мантиссы произведения │mx│х│my│=│mz│:

x

+

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

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

.

Результат операции умножения :

.

Методы ускоренного выполнения операции умножения

Двоичных чисел

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

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

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

Читайте также:  Как выключить сенсорный экран на ноутбуке

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

Логические методы ускоренного выполнения операции умножения делятся на две группы:

— методы, позволяющие уменьшить количество суммирований в процессе умножения;

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

Последние из указанных методов можно разделить на синхронные и асинхронные. Синхронные методы характеризуются тем, что в каждом цикле умножения обрабатывается фиксированное число (два и более) разрядов множителя, то есть длина цикла умножения постоянная.

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

Аппаратурные методы ускоренного выполнения операции умножения делятся на следующие группы:

— схемотехнические методы ускорения выполнения операций сложения и сдвига;

— метод, основанный на использовании при выполнении операции умножения прямого вычитания;

— метод, основанный на введении дополнительных цепей сдвига, позволяющих за один такт производить сдвиг информации в регистрах на несколько разрядов;

— схемотехнический метод совмещения по времени операций сложения и сдвига.

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

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

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

В данном учебном пособии рассматриваются только логические методы ускоренного выполнения операции умножения.

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

Дата добавления: 2016-11-12 ; просмотров: 1665 | Нарушение авторских прав

Ссылка на основную публикацию
Adblock detector