Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие по курсу «Информатика». Ч.2. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
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. Покажите на примере особенности деления в прямом коде дроб-
ных чисел с фиксированной запятой.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]