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

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

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

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 для зворотних кодів.

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

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















Множення і ділення

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

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

Для ілюстрації помножимо 110 011 2 на 101 101 2.

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

 

78. На яких принципах побудований комп’ютер? Принцип адресності.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: