Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
EOM.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
712.41 Кб
Скачать

Додавання і віднімання

У більшості комп'ютерів операція віднімання не використовується. Замість неї здійснюється додавання зворотних або додаткових кодів зменшуваного та від'ємника. Це дозволяє істотно спростити конструкцію АЛП.

Складання зворотних кодів . Тут при додаванні чисел А і В мають місце чотири основних і два особливих випадки:

1. А і В позитивні. При підсумовуванні складаються всі розряди, включаючи розряд знака. Так як знакові розряди позитивних доданків дорівнюють нулю, розряд знака суми теж дорівнює нулю. Наприклад: Отримано правильний результат.      

2. А позитивне, B негативне і по абсолютній величині більше, ніж А. Наприклад: Отримано правильний результат у зворотному коді. При перекладі в прямий код біти цифрової частини результату інвертуються: 1 0000111 = -7 10 .      

3. А позитивне, B негативне і за абсолютною величиною менше, ніж А. Наприклад:

     Комп'ютер виправляє отриманий спочатку неправильний результат (6 замість 7) перенесенням одиниці з знакового розряду в молодший розряд суми.

4. А і В негативні. Наприклад:    

Отриманий спочатку неправильний результат (зворотний код числа -11 10 замість зворотного коду числа -10 10 ) комп'ютер виправляє перенесенням одиниці з знакового розряду в молодший розряд суми. При перекладі результату в прямий код біти цифрової частини числа інвертуються: 1 0001010 = -10 +10 .

При додаванні може виникнути ситуація, коли старші розряди результату операції не поміщаються у відведеній для нього області пам'яті. Така ситуація називається переповненням розрядної сітки формату числа. Для виявлення переповнення та оповіщення про виниклу помилку в комп'ютері використовуються спеціальні засоби. Нижче наведено два можливих випадки переповнення.

5. А і В позитивні, сума А + В більше, або дорівнює 2 n-1 , де n - кількість розрядів формату чисел (для однобайтових формату n = 8, 2 n-1 = 27 = 128). Наприклад:    

Семи розрядів цифрової частини числового формату недостатньо для розміщення восьмирозрядного суми (162 10 = 10100010 2 ), тому старший розряд суми опиняється в знаковому розряді. Це викликає розбіжність знака суми і знаків доданків , що є свідченням переповнення розрядної сітки .

6. А і В негативні, сума абсолютних величин А і В більше, або дорівнює 2 n-1 . Наприклад:

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

Додавання додаткових кодів . Тут також мають місце розглянуті вище шість випадків:

1. А і В позитивні. Тут немає відмінностей від випадку 1, розглянутого для зворотного коду.

2. А позитивне, B негативне і по абсолютній величині більше, ніж А. Наприклад: Отримано правильний результат в додатковому коді. При перекладі в прямий код біти цифрової частини результату інвертуються і до молодшого розряду додається одиниця: 1 0000110 + 1 = 1 0000111 = -7 10 .         

3. А позитивне, B негативне і за абсолютною величиною менше, ніж А. Наприклад: Отримано правильний результат. Одиницю перенесення з знакового розряду комп'ютер відкидає.      

4. А і В негативні. Наприклад: Отримано правильний результат в додатковому коді. Одиницю перенесення з знакового розряду комп'ютер відкидає .      

Випадки переповнення для додаткових кодів розглядаються за аналогією з випадками 5 і 6 для зворотних кодів.

Порівняння розглянутих форм кодування цілих чисел зі знаком показує:

  • на перетворення негативного числа в зворотний код комп'ютер витрачає менше часу, ніж на перетворення в додатковий код, так як останнє складається з двох кроків - освіти зворотного коду і додавання одиниці до його молодшого розряду;

  • час виконання складання для додаткових кодів чисел менше, ніж для їх зворотних кодів, тому що в такому додаванні немає переносу одиниці з знакового розряду в молодший розряд результату.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]