Реферат: Представление чисел в ЭВМ

Название: Представление чисел в ЭВМ
Раздел: Рефераты по информатике
Тип: реферат

Содержание

Задание 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


356 8

4 44 8

4 5 8

5 0

Перевод дробной части :

Количество цифр после перевода дроби из 10 СС в 8 СС:

= 3

0,3110 = 0,2368 = 0, 010 011 110 2

2 3 6


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сс

Перевод целой части:

72310 = 2D316 = 0, 0010 1 10 1 0011 2

2 в 3


723 16

3 45 16

13 2 16

2 0

Перевод дробной части:

Количество цифр после перевода дроби из 10 СС в 16 СС:

= 3

0,5410 = 0,8A316 = 0, 1 0 00 1010 0011 2

8 A 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 (верный результат)

Задание №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 разрядов мантисса

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», а в цифровой части числа цифры заменяются на взаимообратные и к полученному инверсному изображению прибавляется, единица в младший разряд, т.е. код является дополнением до основания СС.

Таким образом, положительные числа во всех кодах одинаковы, а отрицательные – различны.

Задание №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

1

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

Вдк = 1, 01001011000111010111012

М = 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

1 10 ,1111001000001001101101


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 – модуль множимого

Знак произведения: 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

Задание № 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,101001 – модуль множимого

D дк = 0,000111 – модуль множителя

Знак произведения: 1 + 1 = 0

Множитель

n

Сумма ЧП

2n

Примечания

,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

1, 010100 011111

Ответ:

(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

С

зн мантисса порядок

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,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 )

зн мантисса порядок

0 10100011111 1011

Ответ:

(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. Проанализировать знак полученного остатка:

а) если > 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 ,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 1 = 0

Частное (Влево)

Делитель (Вправо)

Делимое (остатки)

Примечания

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 способом, в соответствии с алгоритмом деления в ДК (с автоматической коррекцией). Проверить результат операции, оценить погрешность округления.


Алгоритм деления в дополнительном коде (с автоматической коррекцией).

Операнды участвуют в операции деления со знаковыми разрядами. Знак частного определяется в процессе деления.

  1. Если знаки делимого и делителя совпадают, то в частное заносится «0», в противном случае – «1». Этот разряд знаковый.
  2. Если знаки операндов совпадают, то делитель вычитается из делимого, в противном случае делитель прибавляется к делимому.
  3. Если знак первого остатка совпадает со знаком делимого, то произошло ПРС. Операцию деления прекратить. В противном случае деление продолжить.
  4. Выполнить сдвиги частного и остатка на один разряд влево (I способ) или делителя на один разряд вправо (II способ).
  5. Все последующие остатки формируются по правилу: если знаки делителя и остатка до сдвига совпадали, то делитель вычесть из остатка, в противном случае – делитель прибавить к остатку.
  6. Если знаки нового остатка и делителя совпадают, то в очередной разряд частного занести «1», в противном случае – «0».
  7. Выполнить пп.4-6 (n+1) раз, причем последний сдвиг частного не выполнять.
  8. Выполнить округление результата.

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 (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

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%

Задание №4

Оба операнда положительные, D - делимое. Представить числа в форме с ПЗ в разрядной сетке условной машины. Разделить числа, используя при делении первый способ. Изобразить частное в разрядной сетке условной машины и проверить результат операции.


Деление чисел в форме с плавающей запятой

Когда операнды заданы в форме с ПЗ, то их частное определяется следующим образом:

Т.е. мантисса частного mС есть частное мантисс делимого и делителя, а порядок рС – сумма порядков операндов.

Это позволяет сформулировать алгоритм деления чисел в форме с ПЗ:

  1. Определить знак частного путем сложения по модулю два знаковых разрядов операндов.
  2. Разделить модуль мантиссы делимого на модуль мантиссы делителя по правилам деления дробных чисел с ФЗ.
  3. Определить порядок частного вычитанием порядка делителя из порядка делимого, используя ОК или ДК.
  4. Нормализовать мантиссу результата и присвоить знак из п.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 ,100001

Вычитание

ПРС!

Увеличиваем порядок делимого до 7

0, 000000

0,011100

1,101001

10 , 000101

Вычитание

ПРС!

Увеличиваем порядок делимого до 8

0,000000

0,000001

0,00001 0

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

0 ,000010

0,000100

0,000100

1,101001

1 ,101101

1,011010

1,011010

0,010111

1 ,110001

1,100010

1,100010

0 ,010111

1 ,111001

1,110010

1,110010

0,010111

10,001001

1

0 , 001010

Порядок частного

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 . Сложение двоично-десятичных чисел

Задание №1

Знаки операндов: A<0, B<0. Сложить числа в коде с естественными весами 8-4-2-1 и проверить результат.


\\\

Код с естественными весами 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

Задание №2

Знаки операндов: А>0, В<0. Сложить числа в коде с избытком три и проверить результат.


Код с избытком 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

Задание №3

Знаки операндов: А<0, В>0. Сложить числа в коде 2-4-2-1 и проверить результат.


Код 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

Задание №4

Знаки операндов: А<0, В<0. Сложить числа в коде (3а+2) и проверить результат.


А = - 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 . Умножение двоично-десятичных чисел.

Задание №1

Выполнить умножение старо-русским методом удвоения – деления пополам. Результат проверить . В качестве операндов взять целую часть чисел А и В, представив их в кодах с естественными весами.


Алгоритм умножения заключается в удвоении на каждом шаге множимого, что равносильно сдвигу его на один разряд влево, и делению пополам множителя, что равносильно сдвигу его на один разряд вправо. Шаги повторяются, пока множитель не станет равным нулю.

При сдвиге двоично-десятичных чисел (код 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 01 1101 0001.0111.1000

0000.1011.1100

. 1101 .1101

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 110

0000.0000.0010.1000.1001.0010

0000.0000.0101.0001.0010.0100

0110 011 0

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 11 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 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 0 1 0

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


Задание №2

Выполнить умножение двоично-кодированных десятичных чисел методом десятично-двоичного разложения множителя. Результат проверить.


Метод основан на преобразовании множителя в виде суммы произведений десятичных чисел на степень двойки. Множитель представляется в коде 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 1 10

0 0 01 .010 0 . 0 010.0100.00 0 0.0000

0 0 01 .010 0 . 0 010.0100.00 0 0.0000

*1

*10

0000.0000.0000.0011.0101.0110

0011.0101.0110.0000

0000.0000.0011.1000.1011.0110

Корр

011 0

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 . 0 0 00.0011.0010

0000.0111.1 00 1 . 0 0 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 . 0 0 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. Конспекты лекций по дисциплине «Информатика».