Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2015-2016. ИСТ. Теория.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
88.06 Кб
Скачать

4.2 Обратный код

Обратный код двоичного числа G, представляемого в n-разрядной сетке, определяется как:

 

где В – величина наибольшего числа без знака в n-разрядной сетке, для целых

В = 2n - 1

Если n = 8, то В =

= 2n - 1

Диапазон чисел, представляемых обратным кодом, такой же, как и у прямых кодов:

Правило:

Цифроразряды положительного числа остаются без изменения.

По определению обратный код отрицательного числа – это дополнение модуля исходного числа до наибольшего числа без знака, помещающегося в разрядную сетку. Для получения обратного кода отрицательного числа нужно сформировать инверсию n-разрядного модуля этого числа. В знаковом разряде обратного кода у положительных чисел записывается 0, у отрицательных 1.

А = +1011 Аобр = 0.0001011

В = -1101 Вобр = 1.1110010

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

Дополнительный код двоичного числа G, представляемого в n-разрядной сетке, определяется как:

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

С = 2n

Если n = 8, то С = 1.00000000 = 28 = 255.

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

Диапазон положительных чисел, представляемых дополнительным кодом (как и у прямого):

отрицательных чисел:

(несимметричный диапазон)

Дополнительный код удобно получать из обратного.

Рисунок 4.3 - Поддиапазоны дополнительного кода.

Правило:

Цифроразряды положительного числа остаются без изменения.

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

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

А = +1011 Адоп = 0.0001011

В = -1101 Вдоп = 1.1110011

4.6 Выполнение арифметических операций над числами в кодах

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

При сложении в прямом коде чисел с разными знаками необходимо:

  • определить большее по модулю число;

  • вычесть из большего числа меньшее;

  • присвоить разности знак большего по модулю числа.

Алгебраическое сложение сводится к простому арифметическому сложению при помощи обратных и дополнительных кодов.

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

Правило:

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

4.7 Выполнение операций в обратном и дополнительном кодах

Виконаємо нижчеперелічені операції, з використанням додаткового коду.

а) С=А+В ; б) С=А-В ; в) С=-А+В ; г) С=-А -В ;

де , А=6510, В=4210

1) Представимо числа у двійковій системі числення. А2=1000001, В2=101010

2) Виберемо мінімально можливу довжину розрядної сітки, щоб можна було розмістити операнди А і В з урахуванням знакового біта. Пам’ятайте, що довжина розрядної сітки може дорівнювати 1,2 або 4 байти. Для нашого приклада достатньо одного байта (8 двійкових розрядів). Увага! Формат один байт дозволяє представити додаткові коди чисел зі знаком у діапазоні від -12810 до +12710

3) З урахуванням довжини розрядної сітки, отримаємо: 6510 = 010000012. Зверніть увагу на те, що нулі , у двійковому поданні числа, додані для доповнення розрядної сітки до восьми біт. Аналогічно: 4210 = 001010102.

4) У завданні С=А+В числа додаються додатні, тому представляємо їх у прямому коді. Пам’ятайте ! Записи позитивних чисел у всіх кодах однакові й збігаються із прямим кодом.

Апр= 0.1000001

Впр= 0.0101010

------------------------

Спр= 0.1101011 - двійкова сума

Можна переконатися, що отримана сума це число С= +11010112= +10710

0*27+1*26+1*25+0*24+1*23+0*22+1*21+1*20 = 64+32+8+2+1 = 107

5) Ми розглянули додавання додатних чисел у комп'ютері. Яким чином здійснюється операція - віднімання ? Операція віднімання замінюється додаванням. Наприклад, нехай треба виконати віднімання:

С=А-В=65 - 42. Замінимо віднімання операцією додавання, змінивши знак числа В на протилежний: С=А+(-В)= 65 + (-42)=13. Внаслідок зміни знаку, число В стало від’ємним. А від’ємні числа представляються у вигляді ДОДАТКОВОГО КОДУ.

- В= - 4210 = - 001010102

Додатковий код числа (- В)

Вдод = 1.1010101+0.0000001=1.1010110

Переконаємося в правильності подання. Сума +65 і -65 повинна скласти нуль:

+0.1000001

1.0111111

-----------

(1) 0.0000000

Усі вісім біт мають нульове значення. Одиниця переносу (1)зі знакового розряду «відкидається». Це правило дозволяє виконувати віднімання чисел у двійковій системі числення: віднімання заміняється додаванням – знак від’ємника змінюється на протилежний.

Ураховуючи вище викладене – виконаємо С=А-В

Апр= 0.1000001

1 ┐ одиниця переносу зі знакового розряду «губиться»

65 Апр = 0.1000001

-42 Вдод = 1.1010110

------- ------------------------

23 Спр= 0.0010111 - двійкова сума

Код результату визначеній за значенням знакового розряду.

Дії, наведені нижче, у детальних поясненнях не мають потреби.

С=-А+В

10= - 65; -A2= - 1000001

Апр = 1.1000001 ; Aдод = 1.0111110 + 0.0000001 = 1.0111111 – виділення розрядів числа іншим кольором не випадково. Зверніть увагу, що двійкове число 01111112 = 6310 є доповненням числа 6510 (10000012) до 12810 (100000002) .

Aдод =1.0111111 (-65)10

Впр = 0.0101010 (+42)10

--------------------------

Сдод = 1.1101001

Код суми С (додатковий) визначений по знаковому розряду результату двійкового підсумовування. Для одержання прямого коду, у числовій частині додаткового коду «0» поміняємо на «1», а «1» на «0» і до молодшого розряду додамо «1».

Спр = 1.0010110 + 0.0000001 = 1.0010111 (-2310 ).

Виконаємо С =-А+(-В).

Так, як обоє операнди від’ємні числа то очевидно, що їх необхідно представити у вигляді додаткових кодів.

Aдод =1.0111111 (-65)10

Вдод =1.1010110 (+42)10

-------------------------

Сдод =1.0010101

Перетворимо суму в прямий код

Спр=1.1101010 + 0.0000001 = 1.1101011 ; (-1101011)2 = (-10710)