Модифицированный обратный код



Лабораторная работа № 2

Тема : Представление чисел и арифметические операции в прямом,

Обратном и дополнительном кодах в машинах с фиксированной запятой

Цель – освоить арифметические основы компьютерных операций

Задание:

Выполнить сложение чисел в обратном и дополнительных кодах и результат             проверить переводом в десятичную систему счисления:

1.   А+В в дополнительном коде для случая а и б;

 

2.   А+С в обратном коде для случая а и б;

 

3. В+С ( для случая а) в модифицированном дополнительном коде;

 

4.   В+С ( для случая б) в модифицированном обратном коде.

 

5.  Числа D E представлены в обратном коде. Выполнить сложение для случая а и б и результат проверить переводом в десятичную систему счисления.

 

6.  Числа F G представлены в дополнительном коде. Выполнить для случая а и б сложение и результат проверить переводом в десятичную систему счисления.

 

Варианты заданий представлены в таблице.

Для каждой из переменных приведены по два набора значений.

 

Варианты заданий ( по номеру в списке группы)

№ варианта А - В - С D E F G
1 а б 12 26 -25 -9 -31 -11 0, 11001 0, 11101 1, 11010 1, 00110 0, 10100 0, 00011 1, 10101 1, 10011
2 а б 13 27 -28 -7 -35 -12 0, 11011 0, 11100 1, 11000 1, 00100 0, 10101 0, 00111 1, 11101 1, 00101
3 а б 14 29 -27 -9 -34 -11 0, 11001 0, 11001 1, 11110 1, 00000 0, 10111 0, 00011 1, 11101 1, 10011
4 а б 15 25 -23 -8 -37 -14 0, 11010 0, 11011 1, 11100 1, 00111 0, 10111 0, 00101 1, 10101 1, 00001
5 а б 17 28 -21 -19 -35 -10 0, 11001 0, 11101 1, 11010 1, 00110 0, 10100 0, 00011 1, 10101 1, 10011
6 а б 17 27 -21 -19 -39 -12 0, 11011 0, 11100 1, 11000 1, 00100 0, 10101 0, 00111 1, 11101 1, 00101
7 а б 14 34 -20 -9 -37 -17 0, 11001 0, 11001 1, 11110 1, 00000 0, 10111 0, 00011 1, 11101 1, 10011
8 а б 15 25 -26 -18 -38 -7 0, 11010 0, 11011 1, 11100 1, 00111 0, 10111 0, 00101 1, 10101 1, 00001
9 а б 12 24 -45 -19 -31 -12 0, 11001 0, 11101 1, 11010 1, 00110 0, 10100 0, 00011 1, 10101 1, 10011
10 а б 13 27 -38 -17 -30 -22 0, 11011 0, 11100 1, 11000 1, 00100 0, 10101 0, 00111 1, 11101 1, 00101
11 а б 12 26 -21 -17 -34 -11 0, 11001 0, 11001 1, 11110 1, 00000 0, 10111 0, 00011 1, 11101 1, 10011
12 а б 13 27 -20 -9 -37 -14 0, 11010 0, 11011 1, 11100 1, 00111 0, 10111 0, 00101 1, 10101 1, 00001
13 а б 14 29 -26 -18 -38 -10 0, 11001 0, 11101 1, 11010 1, 00110 0, 10100 0, 00011 1, 10101 1, 10011
14 а б 15 25 -45 -19 -39 -12 0, 11011 0, 11100 1, 11000 1, 00100 0, 10101 0, 00111 1, 11101 1, 00101
15 а б 16 24 -38 -17 -37 -13 0, 11001 0, 11001 1, 11110 1, 00000 0, 10111 0, 00011 1, 11101 1, 10011
16 а б 17 27 -25 -9 -38 -7 0, 11010 0, 11011 1, 11100 1, 00111 0, 10111 0, 00101 1, 10101 1, 00001
17 а б 14 34 -28 -7 -31 -12 0, 11001 0, 11101 1, 11010 1, 00110 0, 10100 0, 00011 1, 10101 1, 10011
18 а б 15 25 -27 -9 -30 -22 0, 11011 0, 11100 1, 11000 1, 00100 0, 10101 0, 00111 1, 11101 1, 00101
19 а б 12 24 -23 -8 -31 -11 0, 11001 0, 11001 1, 11110 1, 00000 0, 10111 0, 00011 1, 11101 1, 10011
20 а б 13 27 -22 -19 -35 -12 0, 11010 0, 11011 1, 11100 1, 00111 0, 10111 0, 00101 1, 10101 1, 00001
21 а б 19 26 -24 -18 -34 -11 0, 11010 0, 11011 1, 11100 1, 00111 0, 10111 0, 00101 1, 10101 1, 00001
22 а б 17 27 -45 -19 -37 -14 0, 11001 0, 11101 1, 11010 1, 00110 0, 10100 0, 00011 1, 10101 1, 10011
23 а б 14 34 -38 -17 -34 -10 0, 11011 0, 11100 1, 11000 1, 00100 0, 10101 0, 00111 1, 11101 1, 00101
24 а б 15 25 -23 -9 -39 -12 0, 11001 0, 11001 1, 11110 1, 00000 0, 10111 0, 00011 1, 11101 1, 10011
25 а б 12 24 -28 -7 -37 -17 0, 11010 0, 11011 1, 11100 1, 00111 0, 10111 0, 00101 1, 10101 1, 00001

 

Указания к выполнению:

1. Прочитать теорию о прямом, обратном и дополнительном кодах. См. п.1 Теории

2. Вспомнить правила перевода в чисел в двоичную систему счисления (СС) и обратно. « Для перевода в двоичную СС число делится на 2 и остатки записываются в обратном порядке. Для перехода из двоичной СС в десятичную число записывается как полином…» Более подробно смотри Компьютерная арифметика – pdf - файл или Системы счисления в Приложении 1.

3. Перевести в двоичную СС данные числа своего варианта.

4. Разобрать приведенные примеры выполнения операций в дополнительном и обратном кодах. См. п.2 Теории.

5. Разобрать примеры , приведенные в Приложении 2.

6. Выполнить задание для своего варианта. Проверить результаты выполнения операций переводом в десятичную СС.

7. Ответить на контрольные вопросы.

8.  Оформить отчет по лабораторной работе. См пример оформления.

- титульный лист ( название работы, вариант, ФИО студента, группа…) ;

- задание и исходные данные;

- подробное выполнение по пунктам с проверкой полученных результатов.

Оформлять можно как на компьютере, так и аккуратно рукописно.

 


Теоретические положения

Прямой, обратный и дополнительный код

В ЭВМ схемы, реализующие операцию сложения, получаются гораздо проще и компактнее, чем схемы, выполняющие операцию вычитания. Поэтому обычно в цифровых машинах применяют только схемы сложения, а операцию вычитания заменяют сложением специально подобранных кодов чисел.

Применяются следующие коды чисел: прямой, обратный и дополнительный. Прямой код применяют при умножении и делении, а обратный и дополнительный - используют для замены операции вычитания сложением. Существуют также модифицированные обратный и дополнительный коды. Изображения положительных чисел совпадают во всех трех кодах: прямом, обратном и дополнительном.

Обратный и дополнительный коды отрицательных чисел (а также их модификации) различны.

 

Простановка знака суммы при алгебраическом сложении должна производиться автоматически. Знаки (+) и (–) у слагаемых могут обозначаться только при помощи сигналов, "понятных" машине, т. е. при помощи нулей и единиц. При этом следует иметь в виду, что электронные считающие элементы назад не срабатывают, а поэтому вычитание в них заменяется сложением в дополнительном или обратном кодах. Рассмотрим сначала сложение в дополнительном коде. Пусть нужно произвести следующее действие: от 176 – 27, не используя вычитание. Условимся все числа писать с одинаковым количеством цифр, равным количеству цифр в наибольшем числе: 176 – 027. Заменив число 027 его дополнением до 1000, которое называется дополнительным кодом числа 027, т. е. числом 1000 – 973 = 027, получим: 176 – (1000 – 973) = 176 + 973 – 1000.

Решение:                  +176

                                    973

                                _1149

                                  1000

                                  +149

 

Очевидно, в этом примере можно обойтись без вычитания, так как вычитание числа 1000 можно не производить, если единица переноса в старший разряд каким-либо действием будет обращена в нуль.

Рассмотрим еще один пример: 027 - 176.

Как и прежде, заменим число 176 его дополнением до 1000.

Тогда 027 - 176 = +027

                             824

                           _851

                           1000

                            -149

Здесь единицы переноса в старший разряд не образуется, но отрицательный результат получился в виде дополнения его до 1000.

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

 

Положительные числа в приведенных примерах остаются без изменения. Применим это же правило для алгебраического сложения двух отрицательных чисел:

- 176 - 527 = - (1000 - 824) - (1000 - 473) = -1000 + 824 - 1000 + 473 =

                                 = +824

                                      473

                                  _1297

                                    1000

                                    _297

                                    1000

                                     -703

 

Правило соблюдается и в этом примере. Условимся число (–1000) обозначать перед нашими числами в виде 1, а в случае его отсутствия ставить перед числом О. Тогда 1 будет ставиться перед всеми отрицательными числами:

                                          176 - 027 = +0.176

                                                               1.973

                                                               0.149

_

По-видимому, можно 1 заменить 1, если при использовании 1 как знака производить “сложение" цифр, заменяющих знаки (+) и (–), по определенным правилам. В первом примере это правило выглядит так:

                         1 - 1

    176 - 027 = +0.176

                         1.973

                        0.149, т.е. “сложение” цифр, заменяющих знаки, должно идти без переноса в старший разряд.

                                                        1

Во втором примере: 027 - 176 = + 0.027

                                                   1.824

                                                   1.851

Поскольку 1 изображается (-1000), то результат 1.851 есть дополнение числа 851 до 1000, взятое со знаком минус: 1.851 à 1.149 = - 149.

В третьем примере: -176 - 527 = + 1.824

                                                       1.473

                                                       1.297

Здесь также теряется единица переноса в старший разряд при "сложении” цифр, заменяющих знаки (+) и (–). Во всех трех примерах слагаемые трехзначные, а суммы не превосходят 1000. Рассмотрим примеры, в которых сумма не меньше тысячи при трехзначных слагаемых:

                                         +0.176

                                           0.825

                                           1.001

Если придерживаться правила, предложенного в предыдущих примерах, то сумма 1.001 означает (– 1000 + 001) = – 999, что неправильно. В то же время, если сдвинуть всю сумму вправо, освободив место для знака, то результат 0.1001= + 1001 будет правильным, но станет четырехзначным. Рассмотрим случай, когда оба слагаемых отрицательны.

                        -176 - 825 = +1.824

                                               1.175

                                               0.999

Результат +999 явно неправилен, и если “сложение" знаков производить по предложенному правилу, то его даже невозможно исправить. Нужно сохранить единицу переноса в старший разряд знака, что можно сделать, выделив для обозначения знаков (+) и (–) два разряда. Такой код числа называется модифицированным дополнительным кодом. В этом коде очевидно плюс следует обозначать 00, а минус 11. Тогда при четырехзначной сумме трехзначных слагаемых получим:

                                        +00.176

                                         00.825

                                         01.001

В двух разрядах для знака разные цифры: 0 и 1. Сдвинув всю сумму вправо, получим правильный результат 00.1001.

 

Рассмотрим другой пример:

                - 176 - 825 =  +11.824

                                        11.175

                                        10.999

В знаковом разряде опять-таки разные цифры: 1 и 0. Сдвинем результат вправо, причем в первом знаковом разряде поставим 1, а в цифровых разрядах получившегося числа 11.0999 заменим первый 0 на 1, а остальное число – его дополнением до 1000. Тогда получим правильный четырехзначный результат 11.1001.

Рассмотрим, будут ли справедливы все предложенные правила в общем случае для чисел в двоичной системе счисления.

В цифровых вычислительных машинах различными кодами изображаются только двоичные числа, являющиеся правильными дробями.

Прямой код

Число Х в прямом коде условно обозначается как [Х]пр. Пусть Х – правильная двоичная дробь, положительная или отрицательная. Прямой код числа Х получается по следующему правилу.

Если Х = +0,х1х2х3…хi…хn, где х1, х2, х3…хi…хn - двоичные цифры, то

[Х]пр = Х = 0,х1х2…хn.

 

Если же Х = –0,х1х2х3…хi…хn, то [Х]пр = 1,х1х2...хn.

Таким образом, прямой код двоичного числа совпадает по изображению с записью самого числа, но в разряде знака стоит 0 или 1 соответственно для положительных и отрицательных чисел.

 

Обратный код

Обратный код числа Х обозначается [Х]обр. Как уже отмечалось, обратный код положительного числа совпадает с его прямым кодом. Поэтому при Х>0

[Х]обр = [Х]пр = Х

 

Для отрицательного числа обратный код получается по следующему правилу: в знаковый разряд числа вписывается единица, а в цифровых разрядах нули заменяются единицами, единицы – нулями.

Таким образом, если имеем отрицательное число Х = –0,х12,... хi...хn, то его изображение в обратном коде будет

_ _ _

[Х]обр = 1,х1х2…хn,

  _                          _

где хi = 1, если хi = 0, и хi = 0, если хi = 1.

 

Пример. Х = -0,1010110; [Х]обр = 1,0101001.

 

В цифровых машинах при сложении обратных кодов по соответствующим правилам получают обратный код суммы.

Дополнительный код

Дополнительный код числа Х обозначается [Х]доп. При Х>О

 

[Х]доп = [Х]пр = Х

 

Дополнительный код отрицательного числа получается по следующему правилу: в знаковом разряде числа записывается единица, во всех цифровых разрядах нули заменяются единицами, а единицы нулями и к младшему цифровому разряду прибавляется единица.

 

Таким образом, дополнительный код отрицательного числа

 

Х = -0,х1х2х3…хi…хn будет: 

                                                    _ _ _ _

[Х]доп = 1,х1х2х3…хn + 0,0000…1,

_                        _                                        în разрядовþ   

где хi = 1, если хi = 0, xi = 0, если xi = 1.

 

Пример. Х = -0,10011101; [Х]доп = 1,01100010 + 0,00000001 = 1,01100011.

 

Нетрудно убедиться в том, что дополнительный код отрицательного двоичного числа есть дополнение этого числа до двух, т, е. [Х]доп = 10 + Х, где 10 означает число 2 в двоичной системе счисления. При сложении дополнительных кодов по соответствующим правилам в машине получают дополнительный код суммы. Кроме обратного и дополнительного кодов, в некоторых цифровых машинах применяются модифицированные обратные и дополнительные коды. В модифицированных кодах знаки чисел изображаются двумя двоичными разрядами: плюс изображается двумя нулями, минус – двумя единицами.

Модифицированный обратный код

Модифицированный обратный код числа Х обозначается [Х]мобр

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

Пример. Х = -0,01101010: [Х]мобр = 11,10010101.

 


Дата добавления: 2018-11-24; просмотров: 401; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!