Алгоритм выполнения операций умножения двоичных чисел
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
Оглавление
1. Индивидуальное задание
. Введение
. Разработка алгоритма и программного модуля преобразования данных в заданный формат
. Разработка алгоритма арифметической операции
. Разработка программы-эмулятора
. Тестирование программы
. Вывод
. Список использований литературы
. Листинг программы
1. Индивидуальное задание
Разработать алгоритм выполнения операций умножения двоичных чисел в формате расширенной точности на сумматоре обратного кода.
Входные данные: Десятичные числа в строковом формате, например 22, 22.33
Выходные данные: Входные числа в двоичной системе счисления, в формате расширенной точности, результат требуемой операции и погрешности вычислений.
2. Введение
Алгоритм решения задачи:
)Преобразование входной строки в десятичное число;
)Перевод из десятичной системы счисления в двоичную;
)Преобразование двоичного числа в формат расширенной точности;
)Повторить 1-3 пункты для второго числа;
)Перевод чисел в обратный код;
)Выполнение требуемой операции (умножение);
)Перевод результата в прямой код;
)Нормализация;
)Вычисление погрешностей.
3. Разработка алгоритма и программного модуля преобразования данных в заданный формат
Формат расширенной точности:
Расширенное вещественное число состоит из 80 бит: первый бит - знак мантиссы, 16 бит - характеристика и 63бита - мантисса. С помощью этого формата можно представить нормированные числа в диапазоне от до .
Если значение знакового бита равно 1, то число считается отрицательным, если 0 - то положительным. Число нуль считается положительным.
Размерность формата80 битаРазмерность мантиссы53 битаРазмерность порядка15 битСмещение порядка+16383
Обратный код.
Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.
Преобразования в обратный код
Диапазон представляемых значений:
Минимальное число: |12•2-16382 | ? | 3,36210314e-4932|
Максимальное число: |12•216383-1| ? | 5,9486574e+4931|
+16383 -16382 .. +16383
Алгоритм преобразования вещественного десятичного числа в двоичное число с плавающей точкой формата расширенной точности.
1. Представить целую часть вещественного числа в двоичном виде и поставить после нее десятичную точку.
. Преобразовать дробную часть вещественного числа в двоичный формат.
. Записать полученное значение дробной части после десятичной точки. Если значение мантиссы меньше выделенного под нее количества разрядов, то дополнить ее незначащими нулями справа до предусмотренного форматом размера.
. Нормализовать полученное двоичное число, определив значение показателя степени.
. К показателю степени прибавить +16383.
. Записать значение характеристики в соответствующие биты формата перед нормализованной мантиссой.
. Если число положительное, то в самый старший разряд представления следует записать 0, если отрицательное - то 1.
Перевод целых чисел методом деления
Перевод правильных дробей методом умножения
Оценка точности выполнения арифметических операций.
Причинами погрешностей вычислений на ЭВМ могут быть:
неточное задание исходных данных, участвующих в выполняемой операции (либо из-за ограниченности разрядной сетки, либо из-за погрешностей перевода информации из одной системы счисления в другую);
использование приближенных методов вычислений, что дает методическую погрешность;
округление результатов элементарных операций;
накапливание погрешностей в последовательности элементарных операций;
сбои в работе ЭВМ.
Абсолютная погрешность - разность между истинным значением величины А и ее значением, полученным из машинного изображения АM (или [A]), т.е. ?[A]=A-AM.
Относительная погрешность представления - это величина [A]=?[A]/AM.
Пример преобразования числа в формат расширенной точности.
К примеру возьмём число 45.56
Целая часть 4510 = 1011012.
.5610= 0.10001111010111000010100011110101110000101011100001011100012.
45.5610=101101.10001111010111000010100011110101110000101011100001011100012.
Нормализуем:
.011011000111101011100001010001111010111000010101110000101110001*25.
Характеристика q =16383+5 = 1000000000001002;
010000000000001011011000111101011100001010001111010111000010101110000101110001Sпорядокмантисса
.10001111010111000010100011110101110000101011100001011100012= 45.559999999999999998
Полученное число не равно исходному, потому что мантисса ограниченна.
Абсолютная погрешность: ?[A] = |45.56- 45.559999999999999998| =0.000000000000000002
Относительная погрешность: [A] = ? 4.389815•10-21
. Разработка алгоритма арифметической операции
Алгоритм умножения двух чисел:
1)Перевод мантисс слагаемых в обратный код;
)Вычисление произведения мантисс сомножителей в форме с фиксированной запятой
)Сложение смещенных порядков сомножителей;
)Нормализация результата.
Перевод мантисс слагаемых в обратный код.
Вычисление произведения мантисс сомножителей в форме с фиксированной запятой
Нормализация результата.
5. Разработка программы-эмулятора
Разработка структур данных.
Программа разработана на языке Turbo Pascal 7.0.
Для представления чисел в формате расширенной точности испол?/p>