Реферат: Представление чисел в ЭВМ
Содержание
Задание 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 + a0q0 + 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
|
,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
|
,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 11 1 10 011101 1001
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
А
1 0 1 1 0 0 1 0 0 0 1 0 0 1 1 1 1 | 1 0 0 1 |
В
1 0 1 1 0 1 0 1 1 1 0 0 0 1 0 1 0 0 0 1 1 | 1 0 1 0 |
Сложение:
1) Выравниваем порядки, для чего выполняем их вычитание с использованием ДК
РА= 0,1001
( Рв )дк = 1,0110
1,1111
(РА — РВ )дк =1,1111
(РА — РВ )пк =1,0001
РА — РВ = -1, значит денормализуем А – сдвигаем мантиссу на один разряд вправо и увеличиваем порядок А на 1.
А
0 1 0 1 1 0 0 1 0 0 0 1 0 0 1 1 1 1 | 01 0 1 0 |
2) Складываем мантиссы
0, 0101100100010011110000
0, 1011010011100010100011
1, 0000110111110110010011
ПРС! Сдвиг мантиссы на один разряд вправо и увеличение порядка суммы на 1.
0, 10000110111110110010011
А+В
1 0 0 0 0 1 1 0 1 1 1 1 1 0 1 1 0 0 1 0 0 1 1 | 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 | Сложение Сдвиг |
,00001 | 0,110001 111000 0,011000 111100 | Сдвиг Сдвиг |
,000001 | 0,111001 1,010001 111100 | Сложение Сдвиг |
,00000 | 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 | Примечания |
,00111 ,01110 ,11100 ,1 11000 | ,000000 000000 ,000000 000000 ,000000 000000 ,0000 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
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 01110 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,00000 | 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,00000 | 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 ,100011 1,000110 | Вычитание Остаток > 0 Сдвиги |
0,000011 0,000110 0,001100 0,011001 0,011001(1) | 1,000110 1,000110 10,001100 1 ,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 ,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%
|
Алгоритм деления без восстановления остатков:
1. Определить знак частного путем сложения по модулю два знаковых разрядов делителя и делимого. Далее использовать модули операндов.
2. Вычесть из делимого делитель путем сложения в ДК или ОК.
3. Проанализировать знак остатка после первого вычитания:
а) если положителен, то произошло ПРС, операцию следует прекратить для смены масштаба операндов;
б) если остаток отрицателен, то в частное занести «0» и продолжить операцию деления.
4. Выполнить сдвиги частного на один разряд влево и остатка на один разряд влево (I способ) или делителя на один разряд вправо (II способ).
5. Если до сдвига остаток был положителен, то вычесть из остатка делитель, если был отрицателен – прибавить к остатку делитель.
6. Если вновь полученный остаток положителен, то в очередной разряд частного занести «1», в противном случае — «0».
7. Выполнить пп.4-6 алгоритма (n+1) раз, причем последний сдвиг частного не выполнять, т.к. (n+1)-ый разряд формируется для округления.
8. Выполнить округление результата и присвоить частному знак из п.1.
C = -2310 = -101112 — делимое
D = -5710 = -1110012 — делитель
Спк = 1,010111
Dпк = 1,111001
Сдк = 1,101001 М = 26
Dдк = 1,000111
1 1 = 0
Частное (Влево) | Делитель (Вправо) | Делимое (остатки) | Примечания |
0,00000 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 ,001000 110000 1,111000 111000 | |||
10,000001 101000 ,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%
|
Алгоритм деления в дополнительном коде (с автоматической коррекцией).
Операнды участвуют в операции деления со знаковыми разрядами. Знак частного определяется в процессе деления.
- Если знаки делимого и делителя совпадают, то в частное заносится «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 ,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 () | 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 | |||
1,000010 110000 1,111010 010000 | |||
1 ,111101 000000 0,000010 111000 | |||
1 ,111111 111000 0,000001 011100 | |||
1,000001 010100 1,111111 010010 | |||
1,000000 100110 1,111111 101001 | |||
1,000000 001111 1,111111 110100 | |||
1,000000 000011 |
(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 | 101110 | 0101 |
D | 111001 | 0110 |
Cдк = 1,101001
0 0 = 0
Частное | Делимое (остатки) | Комментарии |
0,000000 | 0,111001 1,101001 10 ,100001 | Вычитание ПРС! |
Увеличиваем порядок делимого до 7 | ||
0, 000000 | 0,011100 1,101001 10 , 000101 | Вычитание ПРС! |
Увеличиваем порядок делимого до 8 | ||
0,00000 0,000001 0,00001 0,000101 0,001010 0,01 0100 0,101000 0,101000( 1 ) | 0,001110 1,101001 1 ,110111 1,101110 | Вычитание Остаток < 0 Сдвиги Сложение Остаток > 0 Сдвиги Вычитание Остаток < 0 Сдвиги Сложение Остаток > 0 Сдвиги Вычитание Остаток < 0 Сдвиги Сложение Остаток < 0 Сдвиги Сложение Остаток < 0 Сдвиги Сложение Остаток >0 |
0,010111 10,000101 1 0, 000110 0,001100 | ||
0,001100 1,101001 1 ,110101 1,101010 | ||
1,101010 0,010111 10,000001 1 ,000010 0,000100 | ||
0,000100 1,101001 1 ,101101 1,011010 | ||
1,011010 0,010111 1 ,110001 1,100010 | ||
1,100010 ,010111 1 ,111001 1,110010 | ||
1,110010 0,010111 10,001001 1 , 001010 |
Порядок частного
0,0111
1,1011
10,0010=0,0010 = 210
Округление мантиссы:
0,101000
1
0,101001
101001 | 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СС | ПК | ОК |
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СС | ПК | ОК |
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СС | ПК | ОК |
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.011 0001.1010.1011 11 01 1101 0001.0111.100 0000.1011.1100 . 1101 .1101 0000.1000.1001 0000.0100.010 0000.0010.001 0000.0001.0001 0000.0000.1000 1101 0000.0000.0101 0000.0000.001 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 110 0000.0000.0010.1000.1001.0010 0000.0000.0101.0001.0010.0100 0110 011 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 11 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 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 100 . 0110 .0 010 .0 111.0 1 0000.0110.1011.1100.1001.1010 0110 0110 0110 0000.0111.0010.0010.1010.0000 0000.0111.0010.0010.1010.0000 0001.1000.0101. 0000. 1000.1000 0001.1111.0111.0011.0010.1000 0110 0110 0010.0101.0111.0011.1000.1000 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 | ||
корр | 1 10 | ||
01 .010 . 010.0100.00 0.0000 | 01 .010 . 010.0100.00 0.0000 | ||
*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. 00 11 . 0101 . 0110.0000.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 00 1 . 00.0011.0010 | 0000.0111.1 00 1 . 00.0011.0010 | ||
101 | *100 *1 | 0000.0011.0101.0110.0000.0000 0000.0000. 0000 . 00 11 . 0101 . 0110 0000.0011.0101.1001.0101.0110 | 0000.0011.0101.1001.0101.0110 |
Сложение коррекция | 0001.0100.0010.0100.0000.00000000.0111.1 00 1 . 00.0011.0010 0001.1011.1011.0100.0011.0010 0110 0110 | ||
сложение | 0010.0010.0001.0100.0011.0010 0000.0011.0101.1001.0101.0110 0010.0101.0110.1101.1000.1000 | ||
коррекция | 0110 | ||
0010.0101.0111.0011.1000.1000 2 5 7 3 8 8 |
A*B=0010.0101.0111.0011.1000.10008-2-4-1 = 257 38810
Проверка: A*B =35610 *72310 = 257 38810
Список используемой литературы
1.Фадеева Т.Р., Долженкова М.Л. Организация арифметических операций над двоичными числами. – Киров: Изд-во ВятГУ, 2001. – 40 с.
2. Конспекты лекций по дисциплине «Информатика».