Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Учебное пособие по курсу «Информатика». Ч.2. Учебное пособие
.pdf
5.2. Арифметические операции над двоичными числами с плавающей запятой
81
Пример 12. Выполнение операции деления чисел, представленных
дополнительными кодами с фиксированной запятой, для X < 0, У < 0. Заданы числа: Xпр = 1 1011 Yпр = 1 1101.
Поэтапная реализация операции деления представлена на рис. 36.
Х = - 0 1011
Х
доп
= 1 0101
1 0101
0 1101
0 0010
00 0100
11 0011
11 0111
10 1110
00 1101
11 1011
11 0110
00 1101
00 0011
00 0110
11 0011
11 1001
11 0010
00 1101
11 1111
0
1 1 0 1 1
Sм
L1(Sм)
y
доп
Sм
L1(Sм)
L1(Sм)
L1(Sм)
L1(Sм)
Sм
Sм
Sм
y
доп
[-y]
доп
[-y]
доп
sign Oi ≠ sign У
переполнения нет
1
У = - 0 1101
y
доп
= 0011
[-y]
доп
= 0 1101
Рис. 36. Пример выполнения операции деления чисел
в дополнительных кодах для X<0, У<0
Коррекция: sign Z · 2-5 = 0
Результат Z
доп
= 0.11011.
5.2. Арифметические операции над двоичными числами
с плавающей запятой
В ЭВМ чаще представление чисел с плавающей запятой в нормаль-
ной (полулогарифмической форме). Число A в полулогарифмической
форме может быть представлено в виде (7).
A = mn
. qp
, (7)

5. Выполнение арифметических операций в ЭВМ
82
где mn – нормализованная мантисса числа A, определяющая значащие
цифры числа; p – порядок или характеристика числа A; q – основание системы счисления.
Мантисса mn является правильной дробью, которая удовлетворяет
условию (8).
q-1 |mn| < 1. (8)
В мантиссе запятая находится перед старшим значащим разрядом.
Порядок Р определяет положение запятой в числе. При этом порядок может
быть как положительным, так и отрицательным целым числом, или же целым числом без знака. Представление порядка Р и мантиссы mn – в системе
счисления с основанием q.
Для выполнения арифметических операций в процессоре с плавающей запятой необходимо выполнение операций над мантиссами и порядками.
5.2.1. Сложение и вычитание чисел, представленных
в форме с плавающей запятой
Для чисел с плавающей запятой А1 и А2 в виде (9) рассмотрим осо-
бенности выполнения операций сложения и вычитания:
А1 = m
1
. q Р1
; А
2
= m
2
. q Р2
. (9)
Чтобы выполнить сложение или вычитание мантисс чисел с плавающей запятой, необходимо выровнять их порядки (сделать порядки равными).
Алгоритм сложения двух чисел, представленных в форме с плаваю-
щей запятой:
1. Выровнять порядки чисел А1 и А2 (шаги а и б):
а) найти разность порядков чисел А1 и А2 с целью определения,
порядок какого числа больше и на сколько:
P1 – P
2 =
P;
б) после этого мантиссу числа с меньшим порядком сдвинуть
вправо на величину разности порядков P.
Если P > 0, то сдвинуть мантиссу m2, если P < 0, то сдвинуть мантиссу m1. При этом обоим числам присваивается больший порядок.

5.2. Арифметические операции над двоичными числами с плавающей запятой
83
2. Выполнить сложение мантисс m1 и m2 как дробных чисел с фик-
сированной запятой.
3. Присвоить результату больший порядок.
4. В заключение необходимо выполнить проверку результата на нор-
мализацию. В результате выполнения операции сложения возможно нарушение нормализации суммы влево только на один разряд (|M
х
H
| 1) или
вправо на любое число разрядов (|M
х
H
| < q-1).
Признаки нарушения и способы восстановления нормализации
мантиссы в ЭВМ с плавающей запятой
Как говорилось выше, мантисса считается нормализованной, если
выполняется условие
q-1 ≤ |M
х
H
| < 1.
В нашем случае q = 2.
Положительная нормализованная мантисса в двоичном коде имеет
вид:
M
хНпр.обр. доп.
= + 0,1 Х-2 Х-3 … Х-n = M
хНобр.
= M
хНдоп.
Отрицательная нормализованная мантисса:
M
х
H
= - 0,1 Х-2 Х-3 … Х-n;
M
хHпр
= 1,1 Х-2 Х-3 … Х-n;
M
хHобр
= 1,0
-2
-3
…
-n
;
M
хHдоп
= 1,0
-2
-3
…
-n
+2-n.
Таким образом, признаком нормализованной мантиссы в обрат-
ном и дополнительном кодах является различие цифр, стоящих по обе
стороны от запятой. В прямом коде – наличие единицы в старшем значащем разряде.
Признак нарушения нормализации влево для дополнительных и
обратных кодов – это сочетание 01 или 10 в знаковых разрядах модифицированных кодов. Устранение этого нарушения состоит в модифицированном сдвиге мантиссы Мх вправо на 1 разряд и увеличении порядка Рх на
единицу.
Пример 13. Устранить нарушение нормализации влево мантисс Мх,
представленных обратными или дополнительными кодами.

5. Выполнение арифметических операций в ЭВМ
84
1. Мх = 01 110111, Рх = 00 100.
После нормализации:
М
х
н
= 00 111011 ①2, Рх = 00 101.
2. Мх = 10 11011, Рх = 00 011.
После нормализации:
М
х
н
= 11 01101 ①3, Рх = 00 100.
Признаком нарушения нормализации вправо для дополнительных
и обратных кодов является совпадение значения знакового разряда со значением старшего значащего разряда мантиссы. Для устранения этого нарушения мантисса сдвигается влево до тех пор, пока не будут выполняться
условия нормализации. Порядок Рх при этом уменьшается на число выполненных сдвигов. В обратном коде в освобождающиеся младшие разряды
при сдвиге для положительного числа записываются «0», а для отрицательного – «1». В дополнительном коде в освобождающиеся разряды записываются «0» независимо от знака числа.
Пример 14. Устранить нарушение нормализации вправо положи-
тельной мантиссы Мх (прямой, обратный или дополнительный код).
= 00 001010; Рх = 00 100.
Мхн = 00 101000; Рх = 00 010.
Пример 15. Устранить нарушение нормализации вправо мантиссы
Мх в дополнительном коде.
Мх доп. = 11 1001011; Рх = 11 001.
Mхндоп. = 11 0010110; Рх = 11 010.
Пример 16. Устранить нарушение нормализации вправо мантиссы
Мх в обратном коде.
Мх обр. = 11 1101011; Рх = 11 101.
Mхнобр. = 11 0101111; Рх = 11 111.
2
и 3 – разряды, вышедшие за пределы разрядной сетки, могут быть использо-
ваны для округления или отброшены.

5.2. Арифметические операции над двоичными числами с плавающей запятой
85
Соблюдение условий нормализации способствует более экономичному использованию ресурсов ЭВМ, может служить средством повышения
точности выполнения арифметических операций, однако при этом усложняется процесс их выполнений.
Отличие операции вычитания от операции сложения заключается
в инверсии знака мантиссы вычитаемого. После этого выполняется операция сложения по приведенному выше алгоритму.
5.2.2. Умножение чисел с плавающей запятой
Числа с плавающей запятой А1 и А2 представлены следующим образом:
А1 = m1 ∙ qР1; А2 = m2 ∙ qР2.
Арифметическое умножение чисел с плавающей запятой сводится
к умножению мантисс и сложению порядков (как чисел с фиксированной
запятой):
А1 ∙ А2 = [m1 ∙ m2]; q
Р1+P2
.
Перемножение мантисс осуществляется методами, изложенными в
разд. 5.1.2. Чаще используется метод умножения, начиная с младших разрядов множителя, со сдвигом суммы частичных произведений вправо при
неподвижном множимом.
Перед началом умножения мантиссы проверяются на равенство нулю.
Если одна из мантисс равна 0, то сразу формируется нулевой результат.
При суммировании порядков может возникнуть переполнение. Факт
переполнения порядка устанавливается только после нормализации мантиссы результата. При переполнении разрядной сетки порядка результата
исполнение программы прерывается.
В ЭВМ сложение порядков осуществляется параллельно с умножением.
При умножении нормализованных мантисс нарушение нормализации возможно только вправо на 1 разряд, (минимальный результат произведения получаем при перемножении модулей нормализованных мантисс со знаком: 0 100… ∙ 0 100… = 0 010…).
Нарушение нормализации влево при умножении произойти не может. Мантиссы по модулю меньше единицы: 0 111… ∙ 0 111… 0 111…).
Произведению присваивается суммарный порядок сомножителей.

5. Выполнение арифметических операций в ЭВМ
86
5.2.3. Деление чисел с плавающей запятой
Арифметическое деление чисел с плавающей запятой сводится к де-
лению мантисс и вычитанию порядков (как чисел с фиксированной запятой):
А1 : А2 = [m1 : m2]; q
Р1-P2
.
Мантиссы делятся как положительные числа (делятся модули) по
методу без восстановления остатка. Знак частного определяется на основе
анализа знаков делимого и делителя: если знаки совпадают, то 0, иначе 1.
Знак заносится в соответствующий разряд кода частного в конце операции
деления.
5.3. Описание работы программного симулятора-тренажера
Программный симулятор-тренажер [3] предназначен для выполнения арифметических операций над числами, представленными в модифицированных дополнительных кодах. Шестнадцатиразрядные числа могут
быть заданы в формате с фиксированной запятой. Для формата с плавающей запятой используются шестнадцатиразрядные мантиссы и восьмиразрядные порядки. Программный симулятор-тренажер позволяет выполнять
все стандартные арифметические операции, в том числе сложение, вычитание, умножение и деление.
Программный симулятор-тренажер – специальное программное
обеспечение, предоставляющее возможность пошаговой проработки алгоритмов выполнения арифметических операций с программным контролем.
Помимо этой основной функции, программа дает возможность сохранения
отчета выполнения операций в виде файла и вывод его на печать. Это необходимо для того, чтобы у пользователя была возможность распечатать результаты своей работы и поместить их в пояснительную записку курсового
проекта или отчет о выполнении работы.
Программа разработана для работы в операционных системах
Windows XP, Vista, 7, 8. Для разработки использован язык C++ и библиотека Qt 5.1.
Выше по тексту обозначено, что основной функцией программы является возможность пошагового выполнения (трассирования) арифметических операций в рамках, описанных в предыдущем разделе алгоритмов.
Для решения этой задачи разработано простое оконное приложение

5.3. Описание работы программного симулятора-тренажера
87
Windows, включающее в себя весь необходимый для этого функционал.
Вид окна программы представлен на рис. 37. Интерфейсное окно демонстрирует пример выполнения операции умножения чисел с плавающей запятой. Здесь видно, что для удобства визуального восприятия операнды
разбиты на тетрады.
Рис. 37. Интерфейсное окно программного симулятора-тренажера
На начальном этапе пользователю предоставляется возможность выбрать тип операции (сложение, вычитание или умножение) и формат числа
(фиксированная точка или плавающая запятая), а также ввести значения
аргументов. Аргументы вводятся в десятичной системе счисления, в качестве разделителя используется точка. Программа выполняет проверку аргументов на корректность, после чего записывает их в дополнительном модифицированном двоичном коде, что отображается в рабочем поле. Корректными являются числа в диапазоне от -128 до 127 для операций с плавающей запятой, и от -32768 до 32767 для чисел с фиксированной запятой.

5. Выполнение арифметических операций в ЭВМ
88
Для операций умножения и деления программа также осуществляет проверку на ввод ненулевого значения.
Для чисел с плавающей точкой обязательно представление ман-
тиссы mx в нормализованном виде.
На подготовительном этапе программа производит нормализацию
аргументов. В зависимости от выбранной операции, в программном поле
также может быть отображена какая-либо дополнительная информация,
либо произведены начальные действия, не требующие участия пользователя. Так, например, при выполнении операции сложения чисел с фиксированной точкой, программа сразу отобразит первую (и единственную) операцию, тем самым избавив пользователя от излишнего действия, позволив
ему сразу ввести результат.
На следующем этапе программа передает управление пользователю.
В рабочем поле, под областью вывода находится строка ввода, в которую
пользователь должен ввести соответствующую команду и в зависимости от
операции передать с командой параметр – имя операнда, над которым необходимо произвести действие, или значение в бинарном коде. Перечень необходимых команд приведен в табл. 1.
Таблица 1
Команды строки ввода
Команда
Синтаксис команды
Описание
=
= B BBBB BBBB BBBB
BBBB {BBBB BBBB
BBBB BBBB}
Единственная команда, требующая ввода зна-
чения. В зависимости от операции, допуска-
ется различная разрядность. B – {0,1}
+
+ {A,B,D}
Команда выполняет сложение значения, акту-
ального во время вызова команды со значе-
нием указанного при вызове операнда
!
! {A,B}
Команда производит инверсию значения, опе-
ранда, указанного при вызове.
>
> {A,B,C}
Команда производит сдвиг вправо над значе-
нием операнда, указанного при вызове. Во
всех случаях сдвиг арифметический, кроме
коррекции результата при переполнении в
операции над числами с плавающей точкой,
где производится модифицированный сдвиг
<
< {A,B,C}
Команда производит сдвиг влево над значе-
нием операнда, указанного при вызове. Во
всех случаях сдвиг арифметический

5.3. Описание работы программного симулятора-тренажера
89
После вода команды и параметра, программа выполняет проверку
запрошенной команды. Если данная команда не соответствует действию,
которое следует в алгоритме, программа выдаст пользователю соответствующее окно с ошибкой. Если введена допустимая команда, программа переходит к проверке введенного параметра. Если параметр не соответствует
команде, для пользователя будет сформировано соответствующее окно с
ошибкой.
После того, как все проверки пройдены, программа выполнит соответствующее команде действие. В зависимости от действия будет произведена проверка параметра на соответствие результату, который должен получиться в соответствии с алгоритмом.
Если после всех проверок введенные пользователем команда и параметр соответствуют расчетам программы, то в рабочей области будет отображен этот этап.
Описанная выше процедура повторяется, пока не будет получен конечный результат. По окончании работы программы формируется сообщение об успешном завершении операции и блокируется строка ввода.
В программе предусмотрена функция сохранения отчета о выполнении операции. Для этого под панелью установок есть кнопка «SAVE», которая активизируется сразу после запуска очередной операции. Отчет
можно сохранить как в процессе выполнения операции, так и по окончании, когда будет получено сообщение об успешном завершении выполнения операции. Отчет сохраняется в текстовом документе и представляет
собой текст рабочей области.
Также в программе имеется встроенная справка. Для ее вызова в верхнем меню есть соответствующий пункт. В процессе выполнения операции
есть возможность вызывать напрямую именно тот раздел справки, который
соответствует текущей операции. Для этого под панелью установок есть
кнопка «HELP», которая активна только во время выполнения операции.
Разработанный симулятор-тренажер предназначен для использования студентами технических специальностей в рамках курса «Информатика». В отличие от стандартных электронных учебников данный тренажер
позволяет не только изучить теоретический материал в предметной области, но и получить практические навыки синтеза алгоритмов выполнения

Вопросы для самоконтроля
90
арифметических операций в ЭВМ. Особая ценность разработанного симулятора заключается в возможности пошагового выполнения операций и
контроля со стороны программы.
Вопросы для самоконтроля
1. Покажите на примерах выполнение в ЭВМ операцию сложения чи-
сел с фиксированной запятой с произвольными знаками.
2. Как в ЭВМ определяется наличие или отсутствие переполнения
при выполнении операции сложения чисел с фиксированной запятой?
3. Охарактеризуйте общий подход к выполнению в ЭВМ операции
вычитания чисел с фиксированной запятой.
4. Приведите пример выполнения в ЭВМ операции вычитания чисел
с фиксированной запятой, в котором присутствует переполнение разрядной
сетки.
5. Перечислите методы организации выполнения операции перемно-
жения чисел с фиксированной запятой.
6. Какой метод перемножения чисел с фиксированной запятой явля-
ется наиболее эффективным и почему?
7. Покажите на примере особенности перемножения целых чисел с
фиксированной запятой.
8. Покажите на примере алгоритм перемножения дробных чисел с
фиксированной запятой.
9. Поясните отличие алгоритма перемножения целых чисел от алго-
ритма перемножения дробных чисел с фиксированной запятой.
10. Как выполняется умножение чисел с фиксированной запятой в слу-
чае равенства нулю одного из сомножителей?
11. Поясните методы деления в ЭВМ целых чисел с фиксированной
запятой.
12. Сформулируйте условие возможности деления модулей целых и
дробных чисел с фиксированной запятой.
13. Покажите на примере деление в прямом коде целых чисел с фик-
сированной запятой.
14. Покажите на примере особенности деления в прямом коде дроб-
ных чисел с фиксированной запятой.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
