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

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

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
5.1. Арифметические операции над двоичными числами с фиксированной запятой
61
2. Для представления чисел используют модифицированные коды,
в которых для кодирования знака числа выделяется не один, а два разряда. Несовпадение цифр в знаковых разрядах результата при выполнении опе­рации сложения двух чисел является признаком переполнения. Комбина­ция знаковых разрядов «01» свидетельствует о положительном переполне­нии результата операции, а комбинация «10» – об отрицательном перепол­нении.
Для приведенного выше примера суммируем числа в дополнитель-
ном модифицированном коде
Зн
24
23
22
21
2
0
+
11 0 1 0 0
1
доп
11 0 1 1 1
0
доп
1 10 1 0 1 1
1
Комбинация 10 в знаковых разрядах результата является признаком
отрицательного переполнения результата.
Результат операции неверный и дальнейшее решение задачи не
имеет смысла. ЭВМ вырабатывает сигнал φ = 1 (Останов).
Если обозначить знаковые разряды: младший разряд – зн1, а старший
разряд – зн2, то значение сигнала φ будет вырабатываться по формуле
  
     
Если оба слагаемых из того же примера будут положительными чис-
лами, т.е. А
1пр
= 00 10111 (целое десятичное число «-23»), А
2 пр
= 00 10010
(целое десятичное число «-18»), то сложение таких чисел будет выглядеть так:
Зн
24
23
22
21
2
0
+
00 1 0 1 1
1пр
00 1 0 0 1
0пр
01 0 1 0 0
1
Комбинация 01 в знаковых разрядах указывает на переполнение по-
ложительного результата суммирования.
5. Выполнение арифметических операций в ЭВМ
62
В ЭВМ чаще используется первый способ определения переполне­ния разрядной сетки результата суммирования двух чисел с произволь­ными знаками.
Алгоритм выполнения операции сложения чисел с фиксированной запятой [18]:
1) положительные числа остаются без изменения (в прямом коде), от-
рицательные числа переводятся в дополнительный код;
2) суммируются полученные коды чисел, причем знаковые разряды
суммируется как значащие;
3) анализируется результат на переполнение. Если имеет место пере-
полнение, то вырабатывается сигнал φ = 1 и процессор останавливает ре­шение задачи;
4) если переполнения нет, то анализируется результат по знаковому
разряду: 0 – результат в прямом коде, 1 – результат в дополнительном коде.
Рассмотрим примеры выполнения операции сложения.
Пример 1. Заданы числа А1 и А2:
[А1]пр = 0 0100,
[А2]пр = 1 1010, [А2]
доп
= 1 0110.
Суммируем [А1]пр + [А2]
доп
:
+0 0100пр
1 0110
доп
1 1010
доп
.
Переполнения нет, так как отсутствуют оба анализируемых пере­носа. Результат отрицательный (в знаковом разряде 1) и представлен в до­полнительном коде.
[А1]пр + [А2]
доп
= 11010
доп
= (10110)
2пр
= (-6)10.
Проверка: (+4) + (-10) = (-6).
Пример 2. Заданы числа А1 и А2. Выполнить операцию (А1 + А2).
[A1]пр = 1 0110, [A1]
доп
= 1 1010.
[A2]пр = 1 1001, [A2]
доп
= 1 0111.
Суммируем [А1]
доп
+ [А2]
доп
:
+ 1 1010
доп
1 0111
доп
1 0001
доп.
5.1. Арифметические операции над двоичными числами с фиксированной запятой
63
Единица переноса из знакового разряда в результате игнорируется.
Результат отрицательный и представлен в дополнительном коде. Перепол­нения нет, так как присутствуют оба анализируемых переноса. Результат:
[A
рез]доп
= 1 0001; [A
рез]пр
= 1 1111.
Проверка: (-6) + (-9) = (-15). Пример 3. Заданы числа А1 и А2. Выполнить операцию (А1 + А2).
[A1]пр = 0 0111, [A2]пр = 0 1110. Суммируем:
+ 0 0111
пр
0 1110
пр
1 0101.
Переполнение, так как есть только один из анализируемых перено-
сов. Результат неверный. Вырабатывается сигнал «Останов» φ = 1.
Операция вычитания чисел (целых или дробных) заменяется сум-
мой
[A1]пр – [A2]пр = [A1]пр + [–A2]пр.
(3)
В этом случае знак вычитаемого в прямом коде принудительно ин-
вертируется (меняется на противоположный). После этого выполняется операция сложения по рассмотренному ранее алгоритму. Напомним, что отрицательные слагаемые представляются в дополнительных кодах.
Алгоритм выполнения операции вычитания [18]:
1. Инвертируется знаковый разряд вычитаемого, представленного в
прямом коде.
2. Положительные числа остаются без изменения (в прямых кодах),
отрицательные числа переводятся в дополнительный код.
3. Полученные коды чисел суммируются.
4. Анализируется результат арифметического суммирования кодов
на переполнение. Если имеет место переполнение, то вырабатывается сиг­нал φ = 1 и ЭВМ останавливает решение задачи.
5. Если переполнения нет, то анализируется результат по знаковому
разряду: 0 – результат в прямом коде, 1 – результат в дополнительном коде.
Ниже рассмотрены примеры выполнения операции вычитания.
5. Выполнение арифметических операций в ЭВМ
64
Пример 4. Заданы числа А1 и А2. Выполнить операцию (А1 - А2).
[A1]
пр
= 0 1010;
[A2]
пр
= 0 0111. Инвертируем знак вычитаемого [–A2]пр = 1 0111.
Уменьшаемое остается без изменения, так как оно положительное, а
вычитаемое (оно отрицательное) представляем в дополнительном коде:
[–A2]
доп
= 1 1001.
Алгебраическое суммирование [A1]пр + [–A2]
доп
+
0 1010
пр
1 1001
доп
0 0011
пр
Переполнения нет, так как присутствуют оба анализируемых пере-
носа. Результат положительный (в знаковом разряде результата 0) и в пря­мом коде.
Проверка: (+10) – (+7) = (+3).
Пример 5. Заданы числа А1 и А2. Выполнить операцию (А1 - А2). [A1]пр = 1 0111, [A1]
доп
= 1 1001; [A2]пр = 0 1110, [–A2]пр = 1 1110; [–A2]
доп
= 1 0010;
Алгебраическое суммирование уменьшаемого и вычитаемого в до-
полнительном коде:
+
1 1001
доп
1 0010
доп
0 1011
доп
Имеет место переполнение, так как присутствует только один из ана-
лизируемых переносов. Результат неверный. Вырабатывается сигнал «Останов» φ = 1.
5.1.2. Умножение чисел с фиксированной запятой
Самый простой алгоритм умножения чисел, представленных в пря-
мых кодах [1]. Для процессора с фиксированной запятой операция умноже­ния реализуется в два этапа.
5.1. Арифметические операции над двоичными числами с фиксированной запятой
65
На 1-м этапе определяется знак произведения как сумма по модулю
два знаков сомножителей. Операцию «сумма по модулю два» можно заме­нить на признак совпадения. Если оба слагаемые совпадают, то результат ра­вен «0», если – не совпадают, то «1». При этом будут следующие результаты:
0 + 0 = 0;
0 + 1 = 1; 1 + 0 = 1; 1 + 1 = 0.
На 2-м этапе выполняется перемножение операндов по модулю, по­сле чего к полученному произведению приписывается его знак, который был определен на первом этапе.
Операция перемножения чисел с фиксированной запятой сводится в процессоре к последовательности операций сложения и сдвига и состоит из (n-1) циклов (n – число разрядов множителя со знаком). В каждом цикле анализируется очередная цифра множителя, начиная с младших или стар­ших разрядов. Если это «1», то к сумме частичных произведений (проме­жуточных значений произведений) прибавляется множимое; если это «0», то прибавление множимого не производится. Цикл завершается сдвигом суммы частичных произведений относительно неподвижного множимого или сдвигом множимого относительно суммы частичных произведений.
При выполнении операции умножения целых чисел с фиксирован­ной запятой следует учитывать одну особенность: необходимость пред­ставления произведения двойным словом. Это позволяет получить резуль­тат операции с погрешностью, которая соответствует точности представле­ния операндов. Разрядность произведения двух n-разрядных чисел со зна­ком должна иметь 2(n-1) значащих разрядов. Число же значащих разрядов двойного слова равно 2n-1, что на 1 больше числа значащих разрядов про­изведения двух n-разрядных чисел, которое равно 2n-2.
В связи с этим при выполнении операции умножения необходимо учитывать названную выше особенность для целых чисел. Результат умно­жения дробных чисел нет необходимости представлять двойной разрядной сеткой.
5. Выполнение арифметических операций в ЭВМ
66
В математике известен метод умножения чисел в столбик. Метод ис-
пользуется для целых и дробных двоичных чисел. Операцию умножения можно начинать с младших разрядов или со старших разрядов. Для нагляд­ности изображения на рис. 26–29 приведены примеры.
Рис. 26. Пример умножения дробных операндов, начиная
с младшего разряда множителя
Рис. 27. Пример умножения целых операндов, начиная
с младшего разряда множителя
Рис. 28. Пример умножения дробных операндов,
начиная со старшего разряда множителя
Рис. 29. Пример умножения целых операндов, начиная
со старшего разряда множителя
Правила для умножения методом уголка целых и дробных чисел
можно записать в виде последовательности действий (1-3):
1) Z = X * Y = Сл1 + Сл2 + … + Слn,
5.1. Арифметические операции над двоичными числами с фиксированной запятой
67
то есть произведение Z равно сумме слагаемых Слi (i=1, 2, …n), где n – количество числовых разрядов;
2) Определение i-го слагаемого:
Слi =
{
0, если разряд множителя равен 0;
множимому, если разряд множителя равен 1.
3) Слагаемые Слi и Сл
i+1
сдвинуты относительно друг друга на один
разряд.
Приведенные правила (1–3) позволяют сформулировать алгоритм пошагового вычисления произведения Z путем отыскания на каждом i-м шаге частичного произведения (ЧПi).
При этом принимается, что на начальном шаге ЧП0 = 0. Число шагов определяется количеством числовых разрядов множителя.
Общая идея алгоритма заключается в вычислении ЧПi на каждом шаге алгоритма (рис. 30).
Рис. 30. Схематичное представление операции умножения
В ЭВМ операции выполняются над числами, представленными n­разрядным словом со знаком. Как и на бумаге, умножение на каждый раз­ряд множителя (цикл) состоит из сложения множимого с предыдущим зна­чением частичного произведения, если цифра множителя равна 1, или от­сутствие сложения, если цифра множителя равна 0, и сдвига полученного частичного произведения относительно неподвижного множимого или сдвига множимого относительно полученного неподвижного частичного произведения. Исходное значение суммы частичных произведений всегда равно нулю.
Известны четыре основных метода выполнения в ЭВМ операции умножения [1]:
1. Умножение, начиная с младших разрядов множителя, со сдвигом
суммы частичных произведений вправо при неподвижном множимом.
5. Выполнение арифметических операций в ЭВМ
68
2. Умножение, начиная с младших разрядов множителя, при сдвиге
множимого влево и неподвижной сумме частичных произведений.
3. Умножение, начиная со старших разрядов множителя, при сдвиге
суммы частичных произведений влево и неподвижном множимом.
4. Умножение, начиная со старших разрядов множителя, при сдвиге
вправо множимого и неподвижной сумме частичных произведений.
Первый метод умножения нашел наибольшее применение в ЭВМ,
так как при его использовании требуются минимальные затраты оборудо­вания.
Алгоритм пошагового вычисления произведения Z = X * Y заключа­ется в определении частичного произведения ЧПi на каждом i-м шаге. При этом принимается, что на начальном шаге ЧП0 = 0. Число шагов определя­ется количеством числовых разрядов множителя.
В общем случае этому алгоритму соответствуют формулы:
󰇟  
󰇠




󰆒

  
Поясним приведенные формулы. Символ «’» означает, что при вы­числении произведения Z рассматриваются только числовые разряды мно­жителя. В случае использования прямых кодов сомножители (X и Y) должны быть представлены модулями.
Алгоритм [18] можно компактно сформулировать таким образом:
1) сумма частичных произведений ΣЧП0 = 0;
2) анализируется младший разряд множителя Yi:
‒ если младший разряд множителя 
  то к предыдущему зна-
чению суммы частичных произведений ΣЧПi прибавляется множимое ;
‒ если младший разряд множителя 
 , то предыдущее значе-
ние суммы частичных произведений ΣЧПi не меняется (не выполняется прибавление множимого);
3) полученная сумма частичных произведений ΣЧПi и множитель

сдвигаются вправо на 1 разряд;
4) пункты 2) и 3) циклически повторяются (n-1) раз, где n –разряд-
ность множителя

;
5) для правильной постановки произведения в двойную разрядную
сетку ΣЧПi сдвигается вправо на 1 разряд.
5.1. Арифметические операции над двоичными числами с фиксированной запятой
69
Пример 6. Рассмотрим последовательность действий вычислителя
при перемножении модулей целых чисел со знаком (+5)10 и (-5)10 первым методом. Числа целые, произведение должно быть представлено двойной разрядной сеткой.
(+5)2 = 0101; ( | -5 | ) = 0101.
*
0101
0101
+
00000000 – исх. значение суммы частичных произведений ΣЧП0; 0101 – прибавление множимого, разряд множителя равен 1; 01010000 – ΣЧП1; 00101000 – сдвиг вправо на 1 разряд ΣЧП1;
+
00010100 – сдвиг вправо на 1 разряд ΣЧП2; 0101 – прибавление множимого, разряд множителя равен 1; 01100100 – ΣЧП3; 00110010 – сдвиг вправо на 1 разряд ΣЧП3; 00011001 – дополнительный сдвиг вправо на 1 разряд после умно-
жения на все значащие разряды множителя для правильной постановки ре­зультата в формате 2n разрядов.
Одновременно с дополнительным сдвигом результата вправо на
1 разряд для правильной постановки произведения в двойной разрядной сетке определяется и знак произведения. Так как знаки множимого и мно­жителя не совпадают, то знак результата Z
знак
= 1.
Произведение Z = X*Y = (10011001)
2пр
= (-0011001)2 = (-25)10.
Проверка: (+5)
10
* (–5)
10
= (-25)10.
Так как разряды множителя в каждом цикле сдвигаются вправо, то
старшие разряды множителя освобождаются и могут быть использованы для хранения младших разрядов произведения при перемножении целых чисел. Как известно, для хранения операндов в ЭВМ используются реги­стры. Все регистры множимого X, множителя Y и произведения Z будут иметь n разрядов.
На рис. 31 изображена возможная схема выполнения операции
умножения описанным методом [18]. Поясним значение некоторых блоков. Для приема модулей операндов X и Y используются регистры RGX и RGY. Следует обратить внимание, что в этих регистрах хранятся только знача­щие разряды чисел (X0, X1, X2, …., X
n-1
и Y0, Y1, Y2, …., Y
n-1
). Для хранения
5. Выполнение арифметических операций в ЭВМ
70
знаков операндов SignX и SignY используются триггеры Т SignX и Т SignY. СТ – n-разрядный счетчик циклов. Сумматор Sm предназначен
для получения суммы частичных произведений ΣЧПi, где i = 0..(n-1). Для хранения полученной суммы служит регистр сумматора RGSm.
RGA
Sm
RGSm
RGY Yi
Шина У
Шина Х
Т Sign X
Т Sign Y
=1
Шина Z
Sign Z
Z
X
Y
CT
Sign X
Sign Y
Y(n-1),  ..., Y3, Y2, Y1, Y 0
X(n-1),  ., X3, X2, X1, X0
ΣЧП(2n-1) , ... .., ΣЧП1, ΣЧП 0
(2n-1),  .. .., 3, 2, 1, 0
С
Рис. 31. Организация умножения, начиная с младших разрядов множителя
со сдвигом суммы частичных произведений вправо при неподвижном множимом
5.1.3. Деление чисел в прямом коде
Z = X
пр : Yпр
Деление для компьютера является весьма трудной операцией [1]. Де-
ление в ЭВМ представляет собой последовательность вычитаний делителя сначала из делимого, а затем из образовавшихся в процессе деления частич­ных остатков, и сдвига частичных остатков и получаемых разрядов част­ного влево.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]