Содержание
Задание 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
.
Перевод чисел из одной позиционной системы счисления в другую с использованием промежуточных систем счисления и изображение чисел в форматах ЕС и СМ ЭВМ.
|
Любое число А в позиционной системе счисления (СС) с основанием 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сс
Перевод целой части:
|
356 8
4
44 8
4
5 8
5
0
Перевод дробной части
:
Количество цифр после перевода дроби из 10 СС в 8 СС:
= 3
|
0
,31
8
2
,48
8
3,
84
8
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сс
Перевод целой части:
|
723 16
3
45 16
13
2 16
2 0
Перевод дробной части:
Количество цифр после перевода дроби из 10 СС в 16 СС:
= 3
|
0
,54
16
8
,64
16
10
,24
16
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
(верный результат)
|
Для двоичных чисел с ФЗ используют 3 формата фиксированной длины: полуслово – короткий с ФЗ (2 байта = 16 бит, 16 разрядов); слово – длинный с ФЗ (4 байта = 32 бита, 32 разряда); двойное слово – для промежуточных действий(8 байт = 64 бита, 64 разряда), чтобы обеспечить высокую точность вычислений. Двоичные операнды имеют вид целых чисел в дополнительном коде, у которых крайний левый разряд – знаковый. Это правило справедливо как для ЕС ЭВМ, так и для ПЭВМ.
А = 356,31
А = 101100100,0100111102
М=2-9
зн
|
B
= -723,54
B = -1011010011,1000101000112
М=2-10
|
зн
|
Двоичные числа с ПЗ изображаются по-разному в ЕС ЭВМ и ПЭВМ. Общим в изображении является лишь то, что порядки имеют смещения.
В ПЭВМ для чисел с ПЗ используются два формата: короткий и длинный. Смещенный порядок занимает восемь разрядов (смещение=128), крайний левый разряд сетки отводится под знак числа, остальные под мантиссу, изображенную в 2СС (23 разряда в коротком и 55 разрядов в длинном формате). Смещенный порядок содержит информацию о положении запятой в двоичной мантиссе числа. Для повышения точности представления мантиссы старший разряд ее, который в нормализованном виде всегда равен «1», может не заноситься в разрядную сетку, а просто подразумеваться.
В ЕС ЭВМ для чисел с ПЗ имеются три формата: короткий – слово, длинный - двойное слово и расширенный – учетверенное слово. Во всех этих форматах смещенный порядок занимает семь разрядов (смещение=64) и размещается в старшем байте вместе со знаковым разрядом числа. Остальные разряды (24 для короткого формата) занимает мантисса числа, изображаемая в 16 СС. Каждые 4 бита воспринимаются машиной как одна 16-ричная цифра, а в смещенном порядке содержится информация о положении запятой между 16-ричными, а не двоичными цифрами. Мантисса чисел с ПЗ всегда изображается в ПК и должна быть нормализована.
Сравнение представления мантисс с двоичным и шестнадцатеричным основанием показывает существенное расширение диапазона представления чисел в ЕСЭВМ.
А = -356,31
А = -000101100100,0100111102
р = 6
а) 2сс мантисса
зн 8 разрядов мантисса
1 1 0 0 0 1 0 0 1 1 0 1 1 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 0
б) 16сс мантисса
зн 7 разрядов мантисса
1 1 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 0
B
= 723,54
B = 001011010011,1000101000112
р = 9
а) 2сс мантисса
зн 8 разрядов мантисса
0 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1 1 1 0 0 0 1 0 1 0 0 0 1 1 0
б) 16сс мантисса
зн 7 разрядов мантисса
0 1 0 0 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 0 0 0 1 0 1 0 0 0 1 1
II
. Сложение двоичных чисел.
Отрицательные числа в ЦВМ представлены в специальных кодах: прямом, обратном и дополнительном.
Прямой код
(ПК) представляет абсолютное значение числа с закодированным знаком: « + » – «0», « - » – «1».
Обратный код
(OK) положительного числа совпадает с его прямым кодом. Для отрицательного числа в знаковый разряд заносится «1», а в остальных разрядах цифры заменяются на взаимообратные (0 на 1, 1 на 0), т.е. формируется поразрядное дополнение числа до единицы.
Дополнительный код
(ДК) положительного числа совпадает с его прямым кодом. Для отрицательного числа в знаковый разряд заносится «1», а в цифровой части числа цифры заменяются на взаимообратные и к полученному инверсному изображению прибавляется, единица в младший разряд, т.е. код является дополнением до основания СС.
Таким образом, положительные числа во всех кодах одинаковы, а отрицательные – различны.
|
При алгебраическом сложении чисел в ОК со знаковым разрядом оперируют как с разрядом цифровой части числа, а при возникновении единицы переноса из знакового разряда ее прибавляют к младшему разряду числа.
А =-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
1
0, 0101101111001110110011
0, 0101101111001110110011ок
= 101101111, 001110110011пк
101101111, 0011101100112 =
367,2310
Проверка:
(-356,31) 10
+ 723,5410
= 367,2310
|
При алгебраическом сложении чисел в ДК результат получают также в ДК, а при возникновении единицы переноса из знакового разряда ее отбрасывают.
А=356,3110
= 101100100,010011112
B =-723,5410
= -1011010011,1000101000112
Апк
= 0, 01011001000100111100002
Bпк
= 1, 10110100111000101000112
Адк
= 0, 01011001000100111100002
|
Вдк
= 1, 01001011000111010111012
М = 210
Сложение:
0, 0101100100010011110000
1,
0100101100011101011101
1, 1010010000110001001101
1, 1010010000110001001101дк
= 1,0101101111001110110011пк
-101101111, 001110110011=-367,2310
Проверка:
356,3110
+ (-723,54) 10
= -367,2310
|
Модифицированные обратный и дополнительный коды
(МОК и МДК) имеют для изображения знака два соседних разряда: « + » – «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
1 10
,1111001000001001101101
10
- запрещенная комбинация. Увеличиваем масштаб результата, сдвинув его вправо на один разряд, а в освободившийся старший знаковый разряд помещаем значение младшего знакового разряда:
1, 01111001000001001101101дк
= -10000110111110110010011пк
-10000110111,1101100100112
= -1079,84810
Проверка:
-356,3110
+ (-723,54)10
= -1079,8510
|
Сложение чисел в форме с ПЗ
выполняется в несколько этапов. Числа с ПЗ изображаются двумя частями: мантиссой и порядком.
Чтобы их сложить, надо выполнить различные действия над мантиссами и порядками. Поэтому в машинах предусмотрены различные устройства для обработки мантисс и порядков. Мантиссы исходных операндов нормализованы.
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. сдвиги в каждом такте умножения.
Умножение можно выполнять как с младших, так и со старших разрядов множителя, со сдвигом, как частичной суммы, так и множимого в процессе умножения. Этим объясняется существование четырех способов умножения чисел.
Следует обратить внимание на то, что множитель сдвигается во всех способах умножения, так как в каждом такте анализируется очередной разряд: при умножении с младших разрядов сдвиг вправо (в сторону младших разрядов), при умножении со старших разрядов множитель сдвигается влево. И еще одна особенность, позволяющая легко запомнить способы умножения: сумма частичных произведений обычно сдвигается в ту же сторону, что и множитель, а множимое сдвигается навстречу множителю, т.е. в противоположную сторону.
|
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 – модуль множимого
Знак произведения:
0 + 1 = 1
Множитель n |
Сумма ЧП 2n |
Примечания |
,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
|
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
|
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,101001 – модуль множимого
D дк
= 0,000111 – модуль множителя
Знак произведения:
1 + 1 = 0
Множитель n |
Сумма ЧП 2n |
Примечания |
,0
,0
,0
,1
|
,000000 000000 ,000000 000000 ,000000 000000 ,0000
,000000 101001 |
Сдвиг Сдвиг Сдвиг Сложение Сдвиг |
,1
|
,000001 010010 ,000000 101001
,000001 111011 |
Сложение Сдвиг |
,1
|
,000011 110110 ,000000 101001
,000100 011111 |
Сложение |
Псевдопроизведение = 0, 000100 011111
Коррекция
(складываем модули операндов):
+0, 000100 011111
0,
010111
+0, 011011 011111
0, 111001
1, 010100 011111
Ответ:
(C*D)пк
=101000111112 =
131110
Проверка:
(-23)10*
(-57)10
= 131110
|
IV способ
- умножение со старших разрядов множителя со сдвигом множимого вправо.
Устройства, которые хранят операнды, регистры, имеют следующую разрядность:
1. регистр множителя – n-разрядный;
2. регистры множимого и частичных произведений – 2n-разрядный.
Первоначально множимое помещается в старшие разряды регистра, а затем в каждом такте сдвигается на один разряд вправо.
Особенность IV способа умножения состоит в том, что перед началом цикла умножения следует множимое сдвинуть на один разряд вправо.
Умножение чисел в форме с плавающей запятой
Когда сомножители заданы в форме с ПЗ, то их произведение определяется следующим образом:
Т.е. мантисса произведения mс
равна произведению мантисс сомножителей, а порядок рс
– сумме порядков сомножителей.
Это позволяет сформулировать алгоритм умножения чисел в форме с ПЗ:
1. определить знак произведения путем сложения по модулю два знаковых разрядов сомножителей;
2. перемножить модули мантисс сомножителей по правилам умножения дробных чисел с ФЗ;
3. определить порядок произведения алгебраическим сложением порядков сомножителей с использованием модифицированного дополнительного или обратного кодов;
4. нормализовать мантиссу результата и выполнить округление, если это необходимо.
Примечания:
1. Так как мантиссы исходных сомножителей нормализованы, то денормализация мантиссы произведения возможна только на один разряд.
2. При умножении чисел с ПЗ возможно возникновении ПРС при сложении порядков, поэтому необходимо предусматривать выявление признаков ПРС в устройствах умножения чисел с ПЗ.
C = -2310
= 101112
D = -5710
= 1110012
С
зн мантисса порядок
0 1 0 1 1 1 0 0 00101
D
зн мантисса порядок
0 1 1 1 0 0 1 0 00110
Знак произведения:
0 + 0 = 0
Множитель n |
Множимое 2n |
Сумма ЧП 2n |
Примечания |
0,1
0,0
|
0,011100 100000 0,001110 010000 |
0,000000 000000 0,011100 100000
0,011100 100000 |
Сложение Сдвиги |
0,1
|
0,000111 001000 |
Сдвиги |
|
0,011100 100000 0,000111 001000
0,100011 101000 |
Сложение |
||
0,1
|
0,000011 100100 |
Сдвиги |
|
0,1
|
0,000001 110010 |
0,100011 101000 0,000011 100100
0,100111 001100 |
Сложение Сдвиги |
0,100111 001100 0,00
0,101000 111110 |
Сложение |
||
0,0
|
0,000000 111001 |
Сдвиги |
Порядок произведения:
00,0110
00,0101
00,1011 = 1110
Выполняем нормализацию :
0,101000 111110 (
М=212
) = 0,010100011111 (М=212
)
зн мантисса порядок
0 10100011111 1011
Ответ:
(C*D)пк
=101000111112 =
131110
Проверка:
2310*
5710
= 131110
IV
. Деление двоичных чисел
Процесс деления состоит из последовательности операций вычитания и сдвигов, при этом операция вычитания заменяется операцией сложения остатка с делителем, представленным в обратном или дополнительном кодах.
При делении чисел в прямом коде знак частного определяется сложением по модулю два знаковых разрядов делимого и делителя, и далее в процессе деления участвуют модули операндов.
Так как операция деления обратна умножению и начинается всегда со старших разрядов, то существуют два способа деления – обращенный III и IV способы умножения. Причем нередко для реализации умножения и деления целесообразно использовать одно и то же оборудование: регистр множимого - как регистр делителя, регистр множителя – как регистр частного, а регистр частных сумм – как регистр делимого, в который заносят остатки от деления.
|
Алгоритм деления с восстановлением остатков:
1. Определить знак частного сложением по модулю 2 знаковых разрядов делимого и делителя. Далее использовать модули операндов.
2. Вычесть из делимого делитель, путем сложения в ОК или ДК.
3. Проанализировать знак остатка после первого вычитания:
а) если остаток положительный, то произошло ПРС, операцию следует прекратить до смены масштабов операндов;
б) если остаток отрицательный, то в частное занести «0» (этот разряд по окончании деления станет знаковым разрядом частного) и восстановить остаток, прибавив к нему делитель.
4. Выполнить сдвиги: частного на один разряд влево и остатка на один разряд влево (I способ) или делителя на один разряд вправо (II способ).
5. В цикле формирования цифр частного вычитать из остатка делитель, прибавляя его в ОК или ДК.
6. Проанализировать знак полученного остатка:
а) если > 0, то в частное заносится «1»;
б) если <0, то в частное заносится «0».
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
0,111001
10,010110 1
0,010111 |
Вычитание Остаток, < 0 Восст. Остатка Сдвиги |
0,000000
|
0,101110 1,000110
1
0,111001
10,101101 1
0,101110 |
Вычитание Остаток, < 0 Восст. Остатка Сдвиги |
0,000001
|
1,011100 1,000110
10,100010 1
0
1,000110 |
Вычитание Остаток > 0 Сдвиги |
0,000011
0,000110
0,001100
0,011001
0,011001(1)
|
1,000110 1,000110
10,001100 1
0
0,011010 0,011010 1,000110
1
0,111001 10,011001 1
0,011010 0,110100 1,000110
1
0,111001 10,110011 1
0,110100 1,101000 1,101000 1,000110
10,101111 1
0,
1,100000 1,100000 1,000110
10,100110 1
0
|
Вычитание Остаток > 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%
|
Алгоритм деления без восстановления остатков:
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 1 = 0
Частное (Влево) |
Делитель (Вправо) |
Делимое (остатки) |
Примечания |
0,000000
0,000000
0,000001
0,000011
0,000110
0,001100
0,011001
0,011001
/> |
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
0,011100 100000 |
|||
1
0,001110 010000 |
|||
10,001000 110000 0
1,111000 111000 |
|||
10,000001 101000 0
1,111100 011100 |
|||
1
0,000001 110010 |
|||
1
0,000000 111001 10,000000 101111 0,
|
|||
1,111111 100100 10,
0,
|
Округление:
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%
|
Алгоритм деления в дополнительном коде (с автоматической коррекцией).
Операнды участвуют в операции деления со знаковыми разрядами. Знак частного определяется в процессе деления.
Если знаки делимого и делителя совпадают, то в частное заносится «0», в противном случае – «1». Этот разряд знаковый.
Если знаки операндов совпадают, то делитель вычитается из делимого, в противном случае делитель прибавляется к делимому.
Если знак первого остатка совпадает со знаком делимого, то произошло ПРС. Операцию деления прекратить. В противном случае деление продолжить.
Выполнить сдвиги частного и остатка на один разряд влево (I способ) или делителя на один разряд вправо (II способ).
Все последующие остатки формируются по правилу: если знаки делителя и остатка до сдвига совпадали, то делитель вычесть из остатка, в противном случае – делитель прибавить к остатку.
Если знаки нового остатка и делителя совпадают, то в очередной разряд частного занести «1», в противном случае – «0».
Выполнить пп.4-6 (n+1) раз, причем последний сдвиг частного не выполнять.
Выполнить округление результата.
C = -2310
= -101112
- делитель
D = 5710
= 1110012
- делимое
Спк
= 1,010111
Dпк
= 0,111001
Сдк
= 1,101001 М = 26
Dдк
= 0,000111
1 0 = 1
Частное (Влево) |
Делитель (Вправо) |
Делимое (остатки) |
Комментарий |
|
0,000001
|
1,101001 000000 |
0,111001 000000 1,101001 000000 |
Срав. Знаков Сложение ПРС! |
|
10
|
||||
Увеличиваем порядок делимого до 7 |
||||
0,000001
|
1,101001 000000 |
0,011100 100000 1,101001 000000
1
|
Срав. Знаков Сложение ПРС! |
|
Увеличиваем порядок делимого до 8 |
||||
0,000001
0,000010
0,000101
0,001011
0,010110
0,101100
1,011000
1,011000
|
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
0,001011 100000 |
||||
10
1,111010 010000 |
||||
1
0,000010 111000 |
||||
1
0,000001 011100 |
||||
10
1,111111 010010 |
||||
10
1,111111 101001 |
||||
10
1,111111 110100 |
||||
10
|
(D/C)дк
= 1,011000
(D/C)пк
= 1,101000
Порядок частного:
0,0111
1,1011
10,0010=0,0010 = 210
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%
|
Деление чисел в форме с плавающей запятой
Когда операнды заданы в форме с ПЗ, то их частное определяется следующим образом:
Т.е. мантисса частного mС
есть частное мантисс делимого и делителя, а порядок рС
– сумма порядков операндов.
Это позволяет сформулировать алгоритм деления чисел в форме с ПЗ:
Определить знак частного путем сложения по модулю два знаковых разрядов операндов.
Разделить модуль мантиссы делимого на модуль мантиссы делителя по правилам деления дробных чисел с ФЗ.
Определить порядок частного вычитанием порядка делителя из порядка делимого, используя ОК или ДК.
Нормализовать мантиссу результата и присвоить знак из п.1.
В отличие от деления чисел с ФЗ при выполнении п.2 алгоритма, получение положительного остатка при первом вычитании не означает ПРС. При обработке чисел с ПЗ такая ситуация требует денормализации мантиссы делимого сдвигом её на 1 разряд вправо с одновременным увеличением порядка делимого на «1».
Однако ситуация ПРС при делении чисел с ПЗ возможна при вычитании порядков операндов, если они были разных знаков.
C = 2310
= 101112
- делитель
D = 5710
= 1110012
- делимое
Операнды в разрядной сетке условной машины
C = 2310
= 1011102
D = 5710
= 1110012
– делимое
Cпк
= 0,0101112
М = 26
C |
0 |
101110 |
0 |
0101 |
D |
0 |
111001 |
0 |
0110 |
Cдк
= 1,101001
0 0 = 0
Частное |
Делимое (остатки) |
Комментарии |
0,000000 |
0,111001 1,101001
10
|
Вычитание ПРС! |
Увеличиваем порядок делимого до 7 |
||
0, 000000 |
0,011100 1,101001
10
|
Вычитание ПРС! |
Увеличиваем порядок делимого до 8 |
||
0,000000
0,000001
0,00001
0,000101
0,001010
0,01
0,101000
0,101000(
|
0,001110 1,101001
1
1,101110 |
Вычитание Остаток < 0 Сдвиги Сложение Остаток > 0 Сдвиги Вычитание Остаток < 0 Сдвиги Сложение Остаток > 0 Сдвиги Вычитание Остаток < 0 Сдвиги Сложение Остаток < 0 Сдвиги Сложение Остаток < 0 Сдвиги Сложение Остаток >0 |
0,010111
10,000101 1
0,
0,001100 |
||
0,001100 1,101001
1
1,101010 |
||
1,101010 0,010111
10,000001 1
0
0,000100 |
||
0,000100 1,101001
1
1,011010 |
||
1,011010 0,010111
1
1,100010 |
||
1,100010 0
1
1,110010 |
||
1,110010 0,010111
10,001001 1
0
|
Порядок частного
0,0111
1,1011
10,0010=0,0010 = 210
Округление мантиссы:
0,101000
1
0,101001
0 |
101001 |
0 |
0010 |
D/C = 10,10012
= 2,5625
Точный результат: 57/(-23) = -2,4783
Абсолютная погрешность: |- 2,5625+ 2,4783| = 0,0842
Относительная погрешность: (0,0842)/(2,4783) = 0,034 , т.е. 3,4%
V
. Сложение двоично-десятичных чисел
|
Код с естественными весами 8-4-2-1
.
10СС |
ПК |
ОК |
0 |
0000 |
1001 |
1 |
0001 |
1000 |
2 |
0010 |
0111 |
3 |
0011 |
0110 |
4 |
0100 |
0101 |
5 |
0101 |
0100 |
6 |
0110 |
0011 |
7 |
0111 |
0010 |
8 |
1000 |
0001 |
9 |
1001 |
0000 |
Каждая десятичная цифра в этом коде образуется естественным замещением ее двоичным эквивалентом.
Алгоритм сложения в коде 8-4-2-1.
1. Проверить знаки слагаемых. Отрицательные слагаемые преобразовать в обратный код для чего инвертировать тетрады и прибавить потетрадно код 1010. Единица переноса между тетрадами отбрасывается.
2. Сложить двоично-десятичные числа по правилам двоичной арифметики.
3. Выполнить коррекцию результата, прибавив код 0110 к неправильным тетрадам (1010, 1011,1100, 1101, 1110, 1111), а также к тетрадам, в которых сформировались единицы переноса при сложении. Здесь единица переноса из тетрады в тетраду учитывается.
4. Проверить знак результата. Если он отрицателен, то преобразовать его в ПК для чего инвертировать все тетрады и прибавить потетрадно код 1010. Единица переноса отбрасывается.
А=-356,31
B=-723,54
А=-0,035631
B=-0,072354
М=104
A8-2-4 =
1,0000 0011 0101 0110 0011 0001
B8-2-4
= 1,0000 0111 0010 0011 0101 0100
Обратный код:
A: |
1, |
1111 |
1100 |
1010 |
1001 |
1100 |
1110 |
- инверсия |
1010 |
1010 |
1010 |
1010 |
1010 |
1010 |
- коррекция |
||
AОК
|
1, |
1001 |
0110 |
0100 |
0011 |
0110 |
1000 |
Результат в ОК |
B: |
1, |
1111 |
1000 |
1101 |
1100 |
1010 |
1011 |
- инверсия |
1010 |
1010 |
1010 |
1010 |
1010 |
1010 |
- коррекция |
||
BОК
|
1, |
1001 |
0010 |
0111 |
0110 |
0100 |
0101 |
Результат в ОК |
Сложение чисел:
AОК
|
1, |
1001 |
0110 |
0100 |
0011 |
0110 |
1000 |
BОК
|
1, |
1001 |
0010 |
0111 |
0110 |
0100 |
0101 |
1, |
0010 |
1000 |
1011 |
1001 |
1010 |
1101 |
|
1 |
|||||||
1, |
0010 |
1000 |
1011 |
1001 |
1010 |
1110 |
Коррекция:
1, |
0010 |
1000 |
1011 |
1001 |
1010 |
1110 |
|
0110 |
0110 |
0110 |
0110 |
0110 |
|||
(A+B)ОК
|
1, |
1000 |
1001 |
0010 |
0000 |
0001 |
0100 |
Перевод числа в ПК:
(A+B)П
|
1, |
0111 |
0110 |
1101 |
1111 |
1110 |
1011 |
- инверсия |
1010 |
1010 |
1010 |
1010 |
1010 |
1010 |
- коррекция |
||
1, |
0001 |
0000 |
0111 |
1001 |
1000 |
0101 |
Результат в ПК |
(A+B)пк
= 1, 0001 0000 0111 1001 1000 01018-2-4
С учетом масштаба: (A+B) = -1079,8510
Проверка: A+B =-356,3110
- 723,5410
=-1079,8510
|
Код с избытком 3
10СС |
ПК |
ОК |
0 |
0011 |
1100 |
1 |
0100 |
1011 |
2 |
0101 |
1010 |
3 |
0110 |
1001 |
4 |
0111 |
1000 |
5 |
1000 |
0111 |
6 |
1001 |
0110 |
7 |
1010 |
0101 |
8 |
1011 |
0100 |
9 |
1100 |
0011 |
ПК получается прибавлением избытка 3 к коду 8-4-2-1.
Алгоритм сложения в коде с избытком 3
1. Проверить знаки слагаемых. Отрицательные преобразовать в ОК путем инвертирования тетрад.
2. Сложить двоично-десятичные числа по правилам двоичной арифметики.
3. Выполнить коррекцию результата, прибавив код 1101 к тетрадам суммы, из которых не сформировалась единица переноса и прибавив код 0011 к тетрадам суммы из которых сформировалась единица переноса. Единицу переноса между тетрадами при коррекции отбрасывать.
4. Проверить знак результата. Отрицательный преобразовать в ПК, инвертируя тетрады.
А = 356,31
В = - 723,54
А/
= 0,35631 М=103
В/
= - 0,72354
А2-10
= 0,0110.1000.1001.0110.0100
В2-10
= 1,1010.0101.0110.1000.0111
Вок
= 1,0101.1010.1001.0111.1000
Сложение:
0, 0,0110.1000.1001.0110.0100 |
|
1, 1,0101.1010.1001.0111.1000 |
|
1,1100.0011.0010.1101.1100 |
|
1101 0011 0011 1101 1101 |
коррекция |
1,1001.0110.0101.1010.1001 |
инвертируем тетрады т.к. результат отрицательный |
1,0110.1001.1010.0101.0110 |
(А+В)8-4-2-1+3
= 1, 0110.1001.1010.0101.0110
Результат с учетом масштаба М=103
(А+В)= - 367,2310
Проверка:
356,3110
+(-723,54)10
= - 367,2310
|
Код 2-4-2-1
10СС |
ПК |
ОК |
0 |
0000 |
1111 |
1 |
0001 |
1110 |
2 |
0010 |
1101 |
3 |
0011 |
1100 |
4 |
0100 |
1011 |
5 |
1011 |
0100 |
6 |
1100 |
0011 |
7 |
1101 |
0010 |
8 |
1110 |
0001 |
9 |
1111 |
0000 |
Алгоритм сложения в коде 2-4-2-1.
1. Проверить знаки слагаемых. Отрицательные преобразовать в ОК, инвертируя тетрады.
2. Сложить двоично-десятичные числа по правилам двоичной арифметики.
3. Выполнить коррекцию суммы:
если каждая из исходных тетрад меньше 5, то
- коррекция не нужна ,если суммарная тетрада также <5
- если суммарная тетрада ³ 5, то необходима коррекция кодом +6 (0110).
- если одна из исходных тетрад <5, а другая – ³5, то коррекции не требуется.
- если каждая из исходных тетрад ³5, то
- коррекция не нужна, если тетрада суммы ³5
- если тетрада суммы <5, то нужна коррекция кодом –6 (1010)
ИЛИ!
1. Корректируется тетрада суммы прибавлением кода 0110, если содержится 0 в 4-м разряде тетрад обоих слагаемых и комбинации 10 или 01 в 4-м и 3-м разрядах тетрады суммы и есть единица либо во 2-м, либо в 1-м разрядах тетрады суммы.
2. Корректируется тетрада суммы прибавлением кода 1010, если содержится 1 в 4-м разряде обоих слагаемых и комбинация 01 или 10 в 4-м и 3-м разрядах тетрады суммы и есть 0 либо во 2-м, либо в 1-м разрядах тетрады суммы.
!
Единица переноса между тетрадами не учитывается.
Проверить знак результата. Если результат отрицателен, преобразовать его в ПК, инвертировав все тетрады.
А = - 356,31
В = 723,54
А/
= - 0,35631 М=103
В/
= 0,72354
А2-4-2-1
= 1,0011.1011.1100.0011.0001
Аок
= 1,1100.0100.0011.1100.1110
В2-4-2-1
= 0,1101.0010.0011.1011.0100
Сложение:
1, 1100.0100.0011.1100.1110 0, 1101.0010.0011.1011.0100 |
|
10,1001.0110.0111.1000.0010 1 |
|
0,1001.0110.0111.1000.0011 1010.0110.0110.1010 |
коррекция |
0,0011.1100.1101.0010.0011 |
(А+В)2-4-2-1
= 0, 0011.1100.1101.0010.00112-4-2-1
Результат с учетом масштаба М=103
(А+В)=367,2310
Проверка:
-356,3110
+723,5410
=367,2310
|
А = - 356,31
В = - 723,54
А/
= - 0,035631 М=104
В/
= - 0,072354
А3а+2
= 1,00010.01011.10001.10100.01011.00101
Аок
= 1,11101.10100.01110.01011.10100.11010
В3а+2
= 1,00010.10111.01000.01011.10001.01110
Вок
= 1,11101.01000.10111.10100.01110.10001
Сложение:
1, 11101.10100.01110.01011.10100.11010 1, 11101.01000.10111.10100.01110.10001 |
|
11,11010.11101.00110.00000.00011.01011 1 |
|
1,11010.11101.00110.00000.00011.01100 |
|
00010.00010.00010 00010 |
коррекция |
0,11010.11101.01000.00010.00101 01110 |
инвертируем т.к. результат отрицательный |
1,00101.00010.10111.11101.11010.10001 |
(А+В)3а+2
= 1, 00101.00010.10111.11101.11010.10001
Результат с учетом масштаба М=104
(А+В)= - 1079,8510
Проверка:
-356,3110
+(-723,54) 10
= - 1079,8510
VI
. Умножение двоично-десятичных чисел.
|
Алгоритм умножения заключается в удвоении на каждом шаге множимого, что равносильно сдвигу его на один разряд влево, и делению пополам множителя, что равносильно сдвигу его на один разряд вправо. Шаги повторяются, пока множитель не станет равным нулю.
При сдвиге двоично-десятичных чисел (код 8-4-2-1) на один разряд как влево так и вправо необходима коррекция. При сдвиге влево коррекция производится точно так же, как и при сложении, то есть при появлении неправильных тетрад или единицы переноса из тетрады осуществляется прибавление к данной тетраде корректирующего кода 0110. При сдвиге вправо корректирующий код образуется как разница между математическим результатом деления двоичной тетрады пополам (16/2=8) и фактическим (10/2=5), 8-5=310=0011. Эту разницу нужно вынести из тетрады, в которой образовалась единица переноса. Таким образом, корректирующий код будет 310=-00112=1101ДК.
А = 35610
В = 72310
А = 0011.0101.01108-2-4-1
- множитель
В= 0111.0010.00118-2-4-1
- множимое
Множитель |
Множимое |
Произведение |
|
0011.0101.0110
0001.1010.1011 11
0000.1011.1100 .
0000.1000.1001
0000.0100.0100
0000.0010.0010
0000.0001.0001
0000.0000.1000 1101
0000.0000.0101
0000.0000.0010
0000.0000.0001
|
0000.0000.0000.0111.0010.0011 0000.0000.0000.1110.0100.0110 0110
0000.0000.0001.0100.0100.0110 0000.0000.0010.1000.1000.1100 0
0000.0000.0010.1000.1001.0010 0000.0000.0101.0001.0010.0100 0110
0000.0000.0101.0111.1000.0100 0000.0000.1010.1111.0000.1000 0110 0110 0110
0000.0001.0001.0101.0110.1000 0000.0010.0010.1010.1101.0000 0110 0110 0110
0000.0010.0011.0001.0011.0110 0000.0100.0110.0010.0110.1100 0
0000.0100.0110.0010.0111.0010 0000.1000.1100.0100.1110.0100 0110 0110.
0000.1001.0010.0101.0100.0100 0001.0010.0100.1010.1000.1000 0110
0001.1000.0101.0000.1000.1000 |
0000.0000.0000.0000.0000.0000 0000.0000.0000.0000.0000.0000 0000.0000.0010.1000.1001.0010
0000.0000.0010.1000.1001.0010 0000.0000.0010.1000.1001.0010 0000.0010.0011.0001.0011.0110
0000.0010.0101.1001.1100.1000 0110
0000.0010.0101.1010.0010.1000 0000.0010.0101.1010.0010.1000 0000.0
0000.0110.1011.1100.1001.1010 0110
0000.0111.0010.0010.1010.0000 0000.0111.0010.0010.1010.0000 0001.1000.0101.
0001.1111.0111.0011.0010.1000 0110 0110
2 5 7 3 8 8 |
Сдвиг Корр Сдвиг Корр Слож Сдвиг Корр Сдвиг Корр Сдвиг Корр Слож Корр Сдвиг Корр Слож Корр Сдвиг Корр СдвигКорр Слож Корр |
А*B = 0010.0101.0111.0011.1000.10008-2-4-1
= 257.38810
Проверка:
35610
*72310
= 257 38810
|
Метод основан на преобразовании множителя в виде суммы произведений десятичных чисел на степень двойки. Множитель представляется в коде 8-4-2-1. Особенностью преобразованного множителя является то, что десятичное число состоит только из символов 0 и 1, а слагаемых в нём не более четырёх. Каждое из четырёх частичных произведений получают последовательно сдвигом множимого на требуемое количество десятичных разрядов (тетрад) с подсуммированием и коррекцией. Умножение же на степень двойки равносильно сдвигу влево на 1 разряд с введением коррекции.
А2-10
= 0011.0101.01108-2-4-1
-множимое
В2-10
= 0111.0010.00118-2-4-1
- множитель
Преобразование множителя:
B2-10
= 0111. 0010.00118-2-4-1
= (0*23
+ 1*22
+ 1*21
+ 1*20
)*102
+ (0*23
+ 0*22
+ 1*21
+ 0*20
)*101
+ (0*23
+ 0*22
+ 1*21
+ 1*20
)*100
= (000)*23
+(100)*22
+(111)*21
+(101)*20
A2-10
=0011.0101.01108-2-4-1
Множитель (преобраз.) |
Множимое |
Произведение |
|||
100*22
|
*100 |
0000.0011.0101.0110.0000.0000 |
|||
*21
|
0000.0110.1010.1100.0000.0000 |
||||
Корр. |
0110.0110
|
||||
0000.0111.0001.0010.0000.0000 |
|||||
*22
|
0000.1110.0010.0100.0000.0000 |
||||
корр |
0
|
||||
0
|
0
|
||||
*1 *10 |
0000.0000.0000.0011.0101.0110 0011.0101.0110.0000
|
||||
0000.0000.0011.1000.1011.0110 |
|||||
Корр |
011
|
|
|||
111*21
|
11= |
0000.0000.0011.1001.0001.0110 |
|||
+100 |
0000.
|
||||
Корр |
0000.0011.1000.1111.0001.0110 0110
|
||||
111= |
0000.0011.1001.0101.0001.0110 |
||||
*21
|
0000.0111.0010.1010.0010.1100 |
||||
корр |
0110 0110 0110
|
||||
0000.0111.1
|
0000.0111.1
|
||||
101 |
*100 *1 |
0000.0011.0101.0110.0000.0000 0000.0000.
0000.0011.0101.1001.0101.0110
|
0000.0011.0101.1001.0101.0110
|
||
Сложение коррекция |
0001.0100.0010.0100.0000.00000000.0111.1
0001.1011.1011.0100.0011.0010 0110
|
||||
|
сложение |
0010.0010.0001.0100.0011.0010 0000.0011.0101.1001.0101.0110
|
|||
коррекция |
0110
|
||||
0010.0101.0111.0011.1000.1000 2
|
|||||
A*B=0010.0101.0111.0011.1000.10008-2-4-1
= 257 38810
Проверка: A*B =35610
*72310
= 257 38810
Список используемой литературы
1.Фадеева Т.Р., Долженкова М.Л. Организация арифметических операций над двоичными числами. – Киров: Изд-во ВятГУ, 2001. – 40 с.
2. Конспекты лекций по дисциплине «Информатика».