Главная Учебники - Разные Лекции (разные) - часть 35
|
Содержание
Задание 1. Перевод чисел из одной позиционной системы в другую……………………….…3 1.1 Перевод чисел из десятичной системы счисления в двоичную…………………....3 1.2 Изображение чисел в форме с фиксированной запятой (ФЗ).…….………………..5 1.3 Изображение чисел в форме с плавающей запятой (ПЗ)…………………..……….6 Задание 2. Сложение двоичных чисел…………………………………………………....….…..7 2.1 Сложение чисел в форме с ФЗ в обратном коде (ОК)………………………………7 2.2 Сложение чисел в форме с ФЗ в дополнительном коде (ДК)………………………8 2.3 Сложение чисел в форме с ФЗ в модифицированном коде………………...………8 2.4 Сложение чисел в форме с ПЗ………………………………………………….….…9 Задание 3. Умножение двоичных чисел………………………………………………………..11 3.1 Умножение чисел с ФЗ в ПК, используя первый способ умножения…………....11 3.2 Умножение чисел с ФЗ в ДК, используя второй способ умножения………….....13 3.3 Умножение чисел с ФЗ в ДК, используя третий способ умножения……...……...15 3.4 Умножение чисел с ПЗ, используя четвертый способ умножения……..……...…16 Задание 4. Деление двоичных чисел………………………………………………..…………..19 4.1 Деление чисел с ФЗ в ПК первым способом, применяя алгоритм с восстановлением остатков (ВО) и ОК при вычитании………………………………………………………………………………..……….19 4.2 Деление чисел с ФЗ в ПК вторым способом, применяя алгоритм без ВО и ДК при вычитании………………………………………………………….…………….………….21 4.3 Деление чисел с ФЗ в ДК вторым способом, применяя алгоритм с автоматической коррекцией…………………………………………………………………………………..……23 4.4 Деление чисел с ПЗ первым способом…………………………………...…………24 Задание 5. Сложение двоично-десятичных чисел……………………………………………..27 5.1 Сложение двоично-десятичных чисел в коде 8-4-2-1………………………..……27 5.2 Сложение двоично-десятичных чисел в коде с избытком три………………..….28 5.3 Сложение двоично-десятичных чисел в коде 2-4-2-1………………………..……30 5.4 Сложение двоично-десятичных чисел в коде 3а+2………………………..………31 Задание 6. Умножение двоично-десятичных чисел…………………………………......…….32 6.1 Умножение старорусским методом удвоения – деления пополам……...………..32 6.2 Умножение методом десятично-двоичного разложения множителя………….....34 Список литературы………………………………………………………………………...…….36 I
.
Перевод чисел из одной позиционной системы счисления в другую с использованием промежуточных систем счисления и изображение чисел в форматах ЕС и СМ ЭВМ.
Задание №1
Выполнить перевод из 10СС в 2СС, используя промежуточные системы счисления. Выполнить проверку результата, так же используя промежуточные системы счисления.
Любое число А в позиционной системе счисления (СС) с основанием q можно записать в виде: A(q) = an
qn
+ an-1
qn-1
+…+ a1
q1
+ a0
q0
+ a-1
q-1
+…+ a-m
q-m
= где ak
– цифра числа в данной СС; qk
– разрядный вес цифры ak
; n+1 – количество разрядов в целой части числа; m – количество разрядов в дробной части числа. Чтобы перевести целое число в новую СС, его необходимо последовательно делить на основание новой СС до тех пор, пока не получится частное, у которого целая часть равна 0. Число в новой СС записывают из остатков от последовательного деления, причем последний остаток будет старшей цифрой нового числа. Чтобы перевести правильную дробь из одной позиционной СС в другую, надо её последовательно умножать на новое основание до тех пор пока в новой дроби не будет получено нужного количества цифр, определяемого заданной точностью. Правильная дробь в новой СС записывается из целых частей произведений, и старшей цифрой новой дроби будет целая часть первого произведения. Формула для определения количества цифр в новой СС: где m1
– количество цифр исходной дроби с основанием p; m2
– количество цифр в новой дроби с основанем q. А=356,31
10сс – 8сс – 2сс Перевод целой части:
35610
= 5448
= 0, 101
10
0
1
00
2
5 4 4 5
0 Перевод дробной части
:
Количество цифр после перевода дроби из 10 СС в 8 СС: 0,3110
= 0,2368
= 0, 010
011
110
2
2 3 6 0
,31 3,
84 6
,72 Проверка:
2cc – 16сс – 10сс 0001
0110
0100
, 0100
1111
0000
2
= 164,4F16
= (1*256+6*16+4+4*16-1
+15*16-2
)10
= 1 6 4 4 15 0 = 356,3085…10
= 356,3110
(верный результат) B
=723,54
10сс – 16сс – 2сс Перевод целой части:
72310
= 2D316
= 0, 0010
1
10
1
0011
2
2 D 3 2 0 Перевод дробной части:
Количество цифр после перевода дроби из 10 СС в 16 СС: 0,5410
= 0,8A316
= 0, 1
0
00
1010
0011
2
8 A 3 0
,54 10
,24 3
,84 Проверка:
2cc – 8сс – 10сс 001
011
010
011
, 100
010
100
011
2
= 1323,42438
= (1*512+3*64+2*8+3+4*8-1
+2*8-2
+4*8-3
)10
= 1 3 2 3 4 2 4 3 = 723,539…10
= 723,5410
(верный результат) Задание №2
Пусть А – положительное,
B
– отрицательное. Изобразить каждое из них в форме с ФЗ в 32 разрядной сетке ЦВМ, предварительно промасштабировав.
Для двоичных чисел с ФЗ используют 3 формата фиксированной длины: полуслово – короткий с ФЗ (2 байта = 16 бит, 16 разрядов); слово – длинный с ФЗ (4 байта = 32 бита, 32 разряда); двойное слово – для промежуточных действий(8 байт = 64 бита, 64 разряда), чтобы обеспечить высокую точность вычислений. Двоичные операнды имеют вид целых чисел в дополнительном коде, у которых крайний левый разряд – знаковый. Это правило справедливо как для ЕС ЭВМ, так и для ПЭВМ. А = 356,31
А = 101100100,0100111102
М=2-9
зн 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 1 0 0 1 1 1 1 0 B
= -723,54
B = -1011010011,1000101000112
М=2-10
1 1 1 1 1 1 1 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 1 1 0 1 0 1 1 1 0 1 Задание №3
Пусть
B
– положительное,
A
– отрицательное. Изобразить каждое из них в форме с ПЗ, предварительно промасштабировав.
Двоичные числа с ПЗ изображаются по-разному в ЕС ЭВМ и ПЭВМ. Общим в изображении является лишь то, что порядки имеют смещения. В ПЭВМ для чисел с ПЗ используются два формата: короткий и длинный. Смещенный порядок занимает восемь разрядов (смещение=128), крайний левый разряд сетки отводится под знак числа, остальные под мантиссу, изображенную в 2СС (23 разряда в коротком и 55 разрядов в длинном формате). Смещенный порядок содержит информацию о положении запятой в двоичной мантиссе числа. Для повышения точности представления мантиссы старший разряд ее, который в нормализованном виде всегда равен «1», может не заноситься в разрядную сетку, а просто подразумеваться. В ЕС ЭВМ для чисел с ПЗ имеются три формата: короткий – слово, длинный - двойное слово и расширенный – учетверенное слово. Во всех этих форматах смещенный порядок занимает семь разрядов (смещение=64) и размещается в старшем байте вместе со знаковым разрядом числа. Остальные разряды (24 для короткого формата) занимает мантисса числа, изображаемая в 16 СС. Каждые 4 бита воспринимаются машиной как одна 16-ричная цифра, а в смещенном порядке содержится информация о положении запятой между 16-ричными, а не двоичными цифрами. Мантисса чисел с ПЗ всегда изображается в ПК и должна быть нормализована. Сравнение представления мантисс с двоичным и шестнадцатеричным основанием показывает существенное расширение диапазона представления чисел в ЕСЭВМ. А = -356,31
А = -000101100100,0100111102
р = 6 а) 2сс мантисса зн 8 разрядов мантисса б) 16сс мантисса зн 7 разрядов мантисса B
= 723,54
B = 001011010011,1000101000112
р = 9 а) 2сс мантисса зн 8 разрядов мантисса б) 16сс мантисса зн 7 разрядов мантисса II
. Сложение двоичных чисел.
Отрицательные числа в ЦВМ представлены в специальных кодах: прямом, обратном и дополнительном. Прямой код
(ПК) представляет абсолютное значение числа с закодированным знаком: « + » – «0», « - » – «1». Обратный код
(OK) положительного числа совпадает с его прямым кодом. Для отрицательного числа в знаковый разряд заносится «1», а в остальных разрядах цифры заменяются на взаимообратные (0 на 1, 1 на 0), т.е. формируется поразрядное дополнение числа до единицы. Дополнительный код
(ДК) положительного числа совпадает с его прямым кодом. Для отрицательного числа в знаковый разряд заносится «1», а в цифровой части числа цифры заменяются на взаимообратные и к полученному инверсному изображению прибавляется, единица в младший разряд, т.е. код является дополнением до основания СС. Таким образом, положительные числа во всех кодах одинаковы, а отрицательные – различны. Задание №1
Знаки операндов:
B
>0,
A
<0. Сложить числа в форме с ФЗ в обратном коде. Проверить результат.
При алгебраическом сложении чисел в ОК со знаковым разрядом оперируют как с разрядом цифровой части числа, а при возникновении единицы переноса из знакового разряда ее прибавляют к младшему разряду числа. А =-356,3110
= -101100100,010011112
B = 723,5410
= 1011010011,1000101000112
Апк
= 1, 01011001000100111100002
Впк
= 0, 10110100111000101000112
Аок
= 1, 10100110111011000011112
Вок
= 0, 10110100111000101000112
М = 210
Сложение:
1, 1010011011101100001111 0,
1011010011100010100011
10,
0101
1
0
11
1
10
011101
1001
0
0, 0101101111001110110011 0, 0101101111001110110011ок
= 101101111, 001110110011пк
101101111, 0011101100112 =
367,2310
Проверка:
(-356,31) 10
+ 723,5410
= 367,2310
Задание №2
Знаки операндов: А>0, В<0. Сложить числа в форме с ФЗ в дополнительном коде. Проверить результат.
При алгебраическом сложении чисел в ДК результат получают также в ДК, а при возникновении единицы переноса из знакового разряда ее отбрасывают. А=356,3110
= 101100100,010011112
B =-723,5410
= -1011010011,1000101000112
Апк
= 0, 01011001000100111100002
Bпк
= 1, 10110100111000101000112
Адк
= 0, 01011001000100111100002
М = 210
Сложение:
0, 0101100100010011110000 1,
0100101100011101011101
1, 1010010000110001001101 1, 1010010000110001001101дк
= 1,0101101111001110110011пк
-101101111, 001110110011=-367,2310
Проверка:
356,3110
+ (-723,54) 10
= -367,2310
Задание №3
Знаки операндов: А<0, В
<
0. Сложить числа в форме с ФЗ в модифицированном коде (МОК или МДК). При возникновении ПРС выполнить корректирующие действия. Проверить результат.
Модифицированные обратный и дополнительный коды
(МОК и МДК) имеют для изображения знака два соседних разряда: « + » – «00», « - » – «11». Эти коды используются для обнаружения ситуации ПРС - переполнения разрядной сетки. ПРС возникает при сложении чисел с ФЗ одинакового знака, когда результат операции выходит за верхнюю границу диапазона представления чисел, это приводит к потере старших разрядов. Формальным признаком ПРС при использовании МОК и МДК является появление запрещенных комбинаций в знаковых разрядах – «01» или «10». Для исправления результата можно либо увеличить масштаб результата, сдвинув его вправо на один разряд, а в освободившийся старший знаковый разряд поместить значение младшего знакового разряда, либо увеличить масштабы исходных операндов и выполнить арифметическую операцию снова. А=-356,3110
= -101100100,010011112
B =-723,5410
= -1011010011,1000101000112
Апк
= 1, 0101100100010011112
Bпк
= 1, 10110100111000101000112
Амдк
= 11, 1010011011101100012
Вмдк
= 11,01001011000111010111012
М = 210
Сложение:
11,1010011011101100010000 11,0100101100011101011101
10
- запрещенная комбинация. Увеличиваем масштаб результата, сдвинув его вправо на один разряд, а в освободившийся старший знаковый разряд помещаем значение младшего знакового разряда: 1, 01111001000001001101101дк
= -10000110111110110010011пк
-10000110111,1101100100112
= -1079,84810
Проверка:
-356,3110
+ (-723,54)10
= -1079,8510
Задание №4
Знаки операндов: А>0, В>0. Сложить числа в форме с ПЗ. Проверить результат.
Сложение чисел в форме с ПЗ
выполняется в несколько этапов. Числа с ПЗ изображаются двумя частями: мантиссой и порядком. Чтобы их сложить, надо выполнить различные действия над мантиссами и порядками. Поэтому в машинах предусмотрены различные устройства для обработки мантисс и порядков. Мантиссы исходных операндов нормализованы. 1. Выравнивание порядков слагаемых: меньший порядок увеличивается до большего, при этом мантисса меньшего преобразуемого числа денормализуется. В машине выполняется вычитание порядков операндов. Знак и модуль разности порядков определяет, мантиссу какого из слагаемых надо сдвигать вправо и на сколько разрядов. 2. Сложение мантисс операндов по правилам сложения чисел с ФЗ. 3. Нормализация результата, если необходимо. При этом денормализация вправо, т.е. ситуация, когда в старшем разряде двоичной мантиссы «0», требует сдвига мантиссы влево и уменьшения порядка на соответствующее количество единиц. Денормализация влево означает временное ПРС мантиссы суммы, но в отличие от чисел с ФЗ, здесь возможна коррекция: сдвиг мантиссы на один разряд вправо и увеличение на «1» порядка суммы. При больших величинах порядков возможно возникновении истинного ПРС числа с ПЗ, хотя вероятность этого невелика. Смещенные порядки используются в большинстве современных ЭВМ для упрощения процесса выравнивания порядков и их сравнения. При этом для представления порядка применяется специальный дополнительный код с инверсным кодированием знака: « + » – «1», « - » – «0». В результате порядки чисел увеличиваются (в ЕС ЭВМ на 26
=64, в СМ ЭВМ на 27
=128), что приводит к смещению всех порядков по числовой оси в положительном направлении. Такие смещенные порядки называют характеристиками, и так как они все оказываются целыми положительными числами, то алгебраическое сложение можно производить без предварительного анализа знаков. А=356,31 = 101100100,010011112
B =723,54 = 1011010011,1000101000112
А
0 1 0 1 1 0 0 1 0 0 0 1 0 0 1 1 1 1 0 1 0 0 1 В
0 1 0 1 1 0 1 0 1 1 1 0 0 0 1 0 1 0 0 0 1 1 0 1 0 1 0 Сложение:
1) Выравниваем порядки, для чего выполняем их вычитание с использованием ДК РА
=
0,1001 (
Рв
)дк
= 1,0110
1,1111 (РА
- РВ
)дк
=1,1111 (РА
- РВ
)пк
=1,0001 РА
- РВ
= -1, значит денормализуем А – сдвигаем мантиссу на один разряд вправо и увеличиваем порядок А на 1. А
0 0 1 0 1 1 0 0 1 0 0 0 1 0 0 1 1 1 1 0 01 0 1 0 2) Складываем мантиссы 0, 0101100100010011110000 0, 1011010011100010100011
1, 0000110111110110010011 ПРС! Сдвиг мантиссы на один разряд вправо и увеличение порядка суммы на 1.
0,
10000110111110110010011 А+В
0 1 0 0 0 0 1 1 0 1 1 1 1 1 0 1 1 0 0 1 0 0 1 1 0 1 0 1 1 Проверка:
10000110111, 1101100100112
= 1079,84710
356,31+723,54 = 1079,85 III
.
Умножение двоичных чисел.
Процесс умножения чисел в двоичной системе счисления прост, так как разрядами множителя могут быть либо «0», либо «1», и, следовательно, частичным произведением в каждом такте цикла умножения будет либо «0», либо множимое. Поэтому в цикле умножения двоичных чисел три элементарных операции: 1. анализ цифры очередного разряда множителя; 2. суммирование множимого с накопленной суммой частичных произведений, если цифра множителя «1»; 3. сдвиги в каждом такте умножения. Умножение можно выполнять как с младших, так и со старших разрядов множителя, со сдвигом, как частичной суммы, так и множимого в процессе умножения. Этим объясняется существование четырех способов умножения чисел. Следует обратить внимание на то, что множитель сдвигается во всех способах умножения, так как в каждом такте анализируется очередной разряд: при умножении с младших разрядов сдвиг вправо (в сторону младших разрядов), при умножении со старших разрядов множитель сдвигается влево. И еще одна особенность, позволяющая легко запомнить способы умножения: сумма частичных произведений обычно сдвигается в ту же сторону, что и множитель, а множимое сдвигается навстречу множителю, т.е. в противоположную сторону. Задание №1
Знаки операндов: С>0,
D
<0. Представить числа в форме с ФЗ и перемножить их в прямом коде, используя 1 алгоритм умножения. Произвести проверку.
I способ
- умножение с младших разрядов множителя со сдвигом суммы частичных произведений вправо. Устройства, которые хранят операнды, регистры, имеют следующую разрядность: 1. регистры множителя и множимого – n-разрядные; 2. регистр частичных произведений – 2n-разрядный. Суммирование множимого следует выполнять в старшие n разряды регистра суммы частичных произведений. Причем разрядность его можно уменьшить вдвое, до n разрядов, помещая при сдвиге младшие разряды суммы на место освобождающихся разрядов регистра множителя. Особенность I способа умножения состоит в том, что имеется возможность временного переполнения разрядной сетки (ПРС) в регистре суммы частичных произведений, которое ликвидируется при очередном сдвиге вправо. Алгоритм умножения двоичных чисел в прямом коде:
1. определить знак произведения путем сложения по модулю два знаковых разрядов сомножителей; 2. перемножить модули сомножителей одним из четырех способов; 3. присвоить полученному произведению знак из п.1. данного алгоритма. C
= 23
10
D
= -57
10
С = 101112
D = -1110012
С пк
= 0,010111 М = 26
D пк
= 1,111001 D = 0,111001 – модуль множимого Множитель Сумма ЧП
Примечания ,010111
0,000000 000000 0,111001
0,111001 000000 Сложение Сдвиг ,001011
0,011100 100000 0,111001
1,010101 100000 Сложение Сдвиг ,000101
0,101010 110000 0,111001
1,100011 110000 Сложение Сдвиг ,000010
0,110001 111000 0,011000 111100 Сдвиг Сдвиг ,000001
0,111001
1,010001 111100 Сложение Сдвиг ,000000
0,101000 111110 0,010100 011111
Сдвиг Масштаб произведения: М = 212
Ответ:
1, 010100 011111пк
= -101 000 1111 12
= 131110
Проверка:
2310
* (-57)10
= 131110
Задание № 2
Знаки операндов: С<0,
D
>0. Представить числа в форме с ФЗ и перемножить их в дополнительном коде с автоматической коррекцией, используя 2 алгоритм умножения. Произвести проверку.
II способ
- умножение с младших разрядов множителя со сдвигом множимого влево. Устройства, которые хранят операнды, регистры, имеют следующую разрядность: 1. регистр множителя – n-разрядный; 2. регистры множимого и суммы частичных произведений – 2n-разрядный. Первоначально множимое помещается в младшие разряды регистра, а затем в каждом такте сдвигается на один разряд влево. Умножение чисел в дополнительном коде с автоматической коррекцией
Этот алгоритм разработан Бутом и является универсальным для умножения чисел в ДК. Сомножители участвуют в операции со знаковыми разрядами, которые рассматриваются как цифровые разряды числа. Результат получается сразу в дополнительном коде со знаком. В процессе умножения анализируются две смежные цифры множителя: та, на которую выполняется умножение в данном такте – m1
, и соседняя младшая цифра – m2
. В двоичном множителе этой паре соответствуют четыре возможных набора – «00», «01», «10», «11», каждый из которых требует выполнения следующих действий: 1. набор «01» требует сложения
множимого с предыдущей суммой частичных произведений; 2. набор «10» требует вычитания
множимого из предыдущей суммы частичных произведений; 3. наборы «00» и «11» не требуют ни сложения, ни вычитания
, так как частичное произведение равно нулю. В цикле умножения в каждом такте выполняются соответствующие сдвиги на один разряд. При этом могут использоваться все четыре способа умножения с некоторыми особенностями: 1. в I способе не следует выполнять последний сдвиг суммы частичных произведений; 2. в IV способе не выполняется первый сдвиг множимого. Это объясняется тем, что в этих тактах реализуется умножение не на цифровой, а на знаковый разряд числа. Кроме того, при выполнении алгоритма умножения с автоматической коррекцией следует помнить о правилах сдвига отрицательных чисел в ДК
: при сдвиге влево освобождающиеся младшие разряды заполняются нулями, при сдвиге вправо освобождающиеся старшие разряды заполняются единицами, т.е. реализуется арифметический сдвиг числа. C = -2310
= -101112
D = 5710
= 1110012
C пк
= 1,010111 D пк
= 0,111001 С дк
= 1,101001 М = 26
D дк
= 0,111001 - множитель
Сумма ЧП Примечания 0,1110010
0,0111001
1,111111 101001 1,111111 010010 0,000000 000000 0,000000 010111
0,000000 010111 Вычитание Сдвиги 0,0011100
0,0001110
1,111110 100100 1,111101 001000 0,000000 010111 1,111111 010010
1,111111 101001 Сложение Сдвиги Сдвиги 1,111111 101001 0,000010 111000
Вычитание 0,0000111
1,111010 010000 0,000010 100001 Сдвиги 0,0000011
0,0000001
1,110100 100000 1,101001 000000 Сдвиги Сдвиги 0,000000 1,010010 000000 0,000010 100001 1,101001 000000
1,101011 100001 Сложение Сдвиги Ответ:
С*Dдк
= -101011 1000012
С*Dпк
= -010100 0111112
Проверка:
(-23)10
*5710
=(-1311)10
Задание № 3
Оба операнда отрицательны. Представить их в форме с ФЗ в дополнительном коде и перемножить их 3 способом, используя алгоритм с простой коррекцией. Проверить результат.
III способ
- умножение со старших разрядов множителя со сдвигом суммы частичных произведений влево. Устройства, которые хранят операнды, регистры, имеют следующую разрядность: 1. регистры множителя и множимого – n-разрядные; 2. регистр частичных произведений – 2n-разрядный. Суммирование множимого следует выполнять в младшие n разрядов регистра суммы частичных произведений. Особенность
III способа умножения состоит в том, что в последнем такте не следует выполнять сдвиг
в регистре сумм частичных произведений. Алгоритм умножения двоичных чисел в ДК с простой коррекцией:
1. определить знак произведения путем сложения по модулю два знаковых разрядов сомножителей. 2. перемножить модули сомножителей, представленных в ДК, одним из четырех способов – получить псевдопроизведение. 3. если хотя бы один из сомножителей отрицателен, выполнить коррекцию по следующим правилам: · если один сомножитель отрицателен, к псевдопроизведению прибавляется дополнительный код от модуля положительного сомножителя; · если оба сомножителя отрицательны, к псевдопроизведению прибавляются дополнительные коды от модулей дополнительных кодов обоих сомножителей, т.е. их прямые коды. 4. Присвоить модулю произведения знак из п.1 данного алгоритма. C = -2310
= -101112
D = -5710
= -1110012
C пк
= 1,010111 D пк
= 1,111001 М = 26
С дк
= 1,101001 D дк
= 1,000111 Множитель Сумма ЧП Примечания ,0
00111 ,0
01110 ,0
11100 ,1
11000 ,000000 000000 ,000000 000000 ,000000 000000 ,0000
0
0 101001
,000000 101001 Сдвиг Сдвиг Сдвиг Сложение Сдвиг ,1
10000 ,000001 010010 ,000000 101001
,000001 111011 Сложение Сдвиг ,1
00000 ,000011 110110 ,000000 101001
,000100 011111 Сложение Псевдопроизведение = 0, 000100 011111 Коррекция
(складываем модули операндов): +0, 000100 011111 0,
010111
+0, 011011 011111 0, 111001
Ответ:
(C*D)пк
=101000111112 =
131110
Проверка:
(-23)10*
(-57)10
= 131110
Задание №4
Знаки операндов: С>0,
D
>0. Представить числа в форме с ПЗ в разрядной сетке условной машины. При перемножении мантисс использовать 4 способ умножения. Результат представить в той же разрядной сетке.
Произвести проверку.
IV способ
- умножение со старших разрядов множителя со сдвигом множимого вправо. Устройства, которые хранят операнды, регистры, имеют следующую разрядность: 1. регистр множителя – n-разрядный; 2. регистры множимого и частичных произведений – 2n-разрядный. Первоначально множимое помещается в старшие разряды регистра, а затем в каждом такте сдвигается на один разряд вправо. Особенность IV способа умножения состоит в том, что перед началом цикла умножения следует множимое сдвинуть на один разряд вправо. Умножение чисел в форме с плавающей запятой
Когда сомножители заданы в форме с ПЗ, то их произведение определяется следующим образом: Т.е. мантисса произведения mс
равна произведению мантисс сомножителей, а порядок рс
– сумме порядков сомножителей. Это позволяет сформулировать алгоритм умножения чисел в форме с ПЗ:
1. определить знак произведения путем сложения по модулю два знаковых разрядов сомножителей; 2. перемножить модули мантисс сомножителей по правилам умножения дробных чисел с ФЗ; 3. определить порядок произведения алгебраическим сложением порядков сомножителей с использованием модифицированного дополнительного или обратного кодов; 4. нормализовать мантиссу результата и выполнить округление, если это необходимо. Примечания:
1. Так как мантиссы исходных сомножителей нормализованы, то денормализация мантиссы произведения возможна только на один разряд. 2. При умножении чисел с ПЗ возможно возникновении ПРС при сложении порядков, поэтому необходимо предусматривать выявление признаков ПРС в устройствах умножения чисел с ПЗ. C = -2310
= 101112
D = -5710
= 1110012
С
D
0 1 1 1 0 0 1 0 00110 Множитель n
Сумма ЧП 2n Примечания 0,1
01110 0,0
11100 0,011100 100000 0,001110 010000 0,000000 000000 0,011100 100000
0,011100 100000 Сложение Сдвиги 0,1
11000 0,000111 001000 Сдвиги 0,011100 100000 0,000111 001000
0,100011 101000 Сложение 0,1
10000 0,000011 100100 Сдвиги 0,1
00000 0,000001 110010 0,100011 101000 0,000011 100100
0,100111 001100 Сложение Сдвиги 0,100111 001100 0,00
0001 110010
0,101000 111110 Сложение 0,0
00000 0,000000 111001 Сдвиги Порядок произведения:
00,0110 00,0101
00,1011 = 1110
Выполняем нормализацию :
0,101000 111110 (
М=212
) = 0,010100011111 (М=212
) Ответ:
(C*D)пк
=101000111112 =
131110
Проверка:
2310*
5710
= 131110
IV
. Деление двоичных чисел
Процесс деления состоит из последовательности операций вычитания и сдвигов, при этом операция вычитания заменяется операцией сложения остатка с делителем, представленным в обратном или дополнительном кодах. При делении чисел в прямом коде знак частного определяется сложением по модулю два знаковых разрядов делимого и делителя, и далее в процессе деления участвуют модули операндов. Так как операция деления обратна умножению и начинается всегда со старших разрядов, то существуют два способа деления – обращенный III и IV способы умножения. Причем нередко для реализации умножения и деления целесообразно использовать одно и то же оборудование: регистр множимого - как регистр делителя, регистр множителя – как регистр частного, а регистр частных сумм – как регистр делимого, в который заносят остатки от деления. Задание №1
Знаки операндов:
C
>0,
D
<0, C – делимое. Представить числа в форме с ФЗ в ПК, выполнить деление первым способом, применив алгоритм деления с восстановлением остатков с использованием ОК при вычитании. Проверить результат операции, оценить ошибку округления.
Алгоритм деления с восстановлением остатков:
1. Определить знак частного сложением по модулю 2 знаковых разрядов делимого и делителя. Далее использовать модули операндов. 2. Вычесть из делимого делитель, путем сложения в ОК или ДК. 3. Проанализировать знак остатка после первого вычитания: а) если остаток положительный, то произошло ПРС, операцию следует прекратить до смены масштабов операндов; б) если остаток отрицательный, то в частное занести «0» (этот разряд по окончании деления станет знаковым разрядом частного) и восстановить остаток, прибавив к нему делитель. 4. Выполнить сдвиги: частного на один разряд влево и остатка на один разряд влево (I способ) или делителя на один разряд вправо (II способ). 5. В цикле формирования цифр частного вычитать из остатка делитель, прибавляя его в ОК или ДК. 6. Проанализировать знак полученного остатка: а) если б) если 7. Восстановить отрицательный остаток, сложив его с делителем. 8. Выполнить сдвиги, как указано в п.4. 9. Завершить цикл формированием (n+1)-го остатка для округления частного. 10. Выполнить округление результата и присвоить частному знак из п.1. C = 2310
= 101112
D = -5710
= -1110012
Спк
= 0,010111- делимое М = 26
Dпк
= 1,111001 Dок
= 1,000110 - делитель
Делимое (Остатки)
Примечания 0,000000
0,010111 1,000110
1
,011101 0,111001
10,010110 1
0,010111 Вычитание Остаток, < 0 Восст. Остатка Сдвиги 0,000000
0,101110 1,000110
1
,110100 0,111001
10,101101 1
0,101110 Вычитание Остаток, < 0 Восст. Остатка Сдвиги 0,000001
1,011100 1,000110
10,100010 1
0
,100011 1,000110 Вычитание Остаток > 0 Сдвиги 0,000011
0,000110
0,001100
0,011001
0,011001(1)
1,000110 1,000110
10,001100 1
0
,001101 0,011010 0,011010 1,000110
1
,100000 0,111001 10,011001 1
0,011010 0,110100 1,000110
1
,111010 0,111001 10,110011 1
0,110100 1,101000 1,101000 1,000110
10,101111 1
0,
110000 1,100000 1,100000 1,000110
10,100110 1
0
,100111 Вычитание Остаток > 0 Сдвиги Вычитание Остаток <0 Восст. Остатка Сдвиги Вычитание Остаток < 0 Восст. Остатка Сдвиги Вычитание Остаток > 0 Сдвиги Вычитание Остаток > 0 Округление:
0,011001 1
0,011010 (C/D)пк
= 0,011010 C/D = 0,0110102
= 0,4062510
Точный результат: C/D = -23/-57 = - 0,40351 Абсолютная погрешность: - 0,40625 + 0,40351 = - 0,00274 Относительная погрешность: (-0,00274)/(-0,40351) = 0,0068 , т.е. 0,7% Задание №2
Оба операнда отрицательны, С – делимое. Выполнить операцию деления 2 способом чисел в форме с ФЗ в ПК, применив алгоритм деления без восстановления остатков с использованием ДК при вычитании. Проверить результат. Оценить погрешность округления.
Алгоритм деления без восстановления остатков:
1. Определить знак частного путем сложения по модулю два знаковых разрядов делителя и делимого. Далее использовать модули операндов. 2. Вычесть из делимого делитель путем сложения в ДК или ОК. 3. Проанализировать знак остатка после первого вычитания: а) если положителен, то произошло ПРС, операцию следует прекратить для смены масштаба операндов; б) если остаток отрицателен, то в частное занести «0» и продолжить операцию деления. 4. Выполнить сдвиги частного на один разряд влево и остатка на один разряд влево (I способ) или делителя на один разряд вправо (II способ). 5. Если до сдвига остаток был положителен, то вычесть из остатка делитель, если был отрицателен – прибавить к остатку делитель. 6. Если вновь полученный остаток положителен, то в очередной разряд частного занести «1», в противном случае - «0». 7. Выполнить пп.4-6 алгоритма (n+1) раз, причем последний сдвиг частного не выполнять, т.к. (n+1)-ый разряд формируется для округления. 8. Выполнить округление результата и присвоить частному знак из п.1. C = -2310
= -10111 2
- делимое D = -5710
= -111001 2
- делитель Спк
= 1,010111 Dпк
= 1,111001 Сдк
= 1,101001 М = 26
Dдк
= 1,000111 1 Частное (Влево)
Делимое (остатки) Примечания 0,000000
0,000000
0,000001
0,000011
0,000110
0,001100
0,011001
0,011001
(1
) 0,111001 000000 0,011100 100000 0,001110 010000 0,000111 001000 0,000011 100100 0,000001 110010 0,000000 111001 0,000000 011100 0,010111 000000 1,000111 000000 Вычитание Остаток < 0 Сдвиги Сложение Остаток < 0 Сдвиги Сложение Остаток > 0 Сдвиги Вычитание Остаток > 0 Сдвиги Вычитание Остаток < 0 Сдвиги Сложение Остаток < 0 Сдвиги Сложение Остаток > 0 Сдвиги Вычитание Остаток < 0 1
,011110 000000 0,011100 100000 1
,111010 100000 0,001110 010000 10,001000 110000 0
,001000 110000 1,111000 111000 10,000001 101000 0
,000001 101000 1,111100 011100 1
,111110 000100 0,000001 110010 1
,111111 110110 0,000000 111001 10,000000 101111 0,
000000 101111 1,111111 100100 10,
000000 010011 0,
000000 010011 Округление:
0,011001 1
0,011010 (C/D)пк
= 0,011010 C/D = 0,011010(2)
= 0,4062510
Точный результат: C/D = -23/-57 = - 0,40351 Абсолютная погрешность: - 0,40625 + 0,40351 = - 0,00274 Относительная погрешность: ( (-0,00274)/(-0,40351) )= 0,0068 , т.е. 0,7% Задание №3
Знаки операндов:
C
<0,
D
>0, причем
D
- делимое. Представить числа в форме с ФЗ в ДК, выполнить деление 2 способом, в соответствии с алгоритмом деления в ДК (с автоматической коррекцией). Проверить результат операции, оценить погрешность округления.
Алгоритм деления в дополнительном коде (с автоматической коррекцией).
Операнды участвуют в операции деления со знаковыми разрядами. Знак частного определяется в процессе деления. C = -2310
= -101112
- делитель D = 5710
= 1110012
- делимое Спк
= 1,010111 Dпк
= 0,111001 Сдк
= 1,101001 М = 26
Dдк
= 0,000111 1 Частное (Влево)
Делимое (остатки) Комментарий 0,000001
1,101001 000000 0,111001 000000 1,101001 000000 Срав. Знаков Сложение ПРС! 10
,100010 000000 Увеличиваем порядок делимого до 7 0,000001
1,101001 000000 0,011100 100000 1,101001 000000
1
0,
000101 100000 Срав. Знаков Сложение ПРС! Увеличиваем порядок делимого до 8 0,000001
0,000010
0,000101
0,001011
0,010110
0,101100
1,011000
1,011000
(0
) 1,101001 000000 1,110100 100000 1,111010 010000 1,111101 001000 1,111110 100100 1,111111 010010 1,111111 101001 1,111111 110100 0,001110 010000 1,101001 000000 Срав. Знаков Сложение Сдвиги Вычитание Сдвиги Сложение Сдвиги Вычитание Сдвиги Вычитание Сдвиги Сложение Сдвиги Сложение Сдвиги Сложение 1
,110111 010000 0,001011 100000 10
,000010 110000 1,111010 010000 1
,111101 000000 0,000010 111000 1
,111111 111000 0,000001 011100 10
,000001 010100 1,111111 010010 10
,000000 100110 1,111111 101001 10
,000000 001111 1,111111 110100 10
,000000 000011 (D/C)дк
= 1,011000 (D/C)пк
= 1,101000 Порядок частного: 0,0111 1,1011
D/C = 10,10002
= 2,5 M = 22
Точный результат: 57/(-23) = -2,4783 Абсолютная погрешность: |- 2,5+ 2,4783| = 0,0217 Относительная погрешность: (0,0217)/(2,4783) = 0,0088 , т.е. 0,9% Задание №4
Оба операнда положительные,
D
- делимое. Представить числа в форме с ПЗ в разрядной сетке условной машины. Разделить числа, используя при делении первый способ. Изобразить частное в разрядной сетке условной машины и проверить результат операции.
Деление чисел в форме с плавающей запятой
Когда операнды заданы в форме с ПЗ, то их частное определяется следующим образом: Т.е. мантисса частного mС
есть частное мантисс делимого и делителя, а порядок рС
– сумма порядков операндов. Это позволяет сформулировать алгоритм деления чисел в форме с ПЗ: В отличие от деления чисел с ФЗ при выполнении п.2 алгоритма, получение положительного остатка при первом вычитании не означает ПРС. При обработке чисел с ПЗ такая ситуация требует денормализации мантиссы делимого сдвигом её на 1 разряд вправо с одновременным увеличением порядка делимого на «1». Однако ситуация ПРС при делении чисел с ПЗ возможна при вычитании порядков операндов, если они были разных знаков. C = 2310
= 101112
- делитель D = 5710
= 1110012
- делимое Операнды в разрядной сетке условной машины
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||