Методичні вказівки арифметичні основи ЕОМ і систем

2. Основи машинної арифметики з двійковими числами.

Будь-яка інформація (числа, команди, записи і т. П.) Представляється в ЕОМ у вигляді двійкових кодів фіксованою або змінною довжини. Окремі елементи двійкового коду, що мають значення 0 або 1, називають розрядами або бітами. Двійковий код складається з 8 розрядів носить назву байта. Для запису чисел також використовують 32-розрядний формат (машинне слово), 16-розрядний формат (півслова) і 64-розрядний формат (подвійне слово).

У ЕОМ з метою спрощення виконання арифметичних операцій застосовують спеціальні коди для представлення чисел. Використання кодів дозволяє звести операцію віднімання чисел до арифметичного складання кодів цих чисел. Застосовуються прямий, зворотний і додатковий коди чисел. Прямий код використовується для представлення негативних чисел в пристрої ЕОМ, а також при множенні і діленні. Зворотний і додатковий коди використовуються для заміни операції віднімання операцією додавання, що спрощує пристрій арифметичного блоку ЕОМ. До кодами висуваються наступні вимоги:
1) Розряди числа в коді жорстко пов'язані з певною розрядної сіткою.
2) Для запису коду знаку в розрядної сітці відводиться фіксований, строго певний розряд.
Наприклад, якщо за основу уявлення коду узятий один байт, то для представлення числа буде відведено 7 розрядів, а для запису коду знаку один розряд.

Прямий код. Прямий код двійкового числа збігається із зображення із записом самого числа. Значення знакового розряду для позитивних чисел дорівнює 0, а для негативних чисел 1.

Знаковим розрядом зазвичай є крайній розряд в розрядної сітці. Надалі під час запису коду знаковий розряд від цифрових домовимося відокремлювати комою. Якщо кількість розрядів коду не вказано будемо припускати, що під запис коду виділений один байт.

Приклад. У разі, коли для запису коду виділений один байт, для числа +1101 прямий код 0,0001101, для числа -1101 прямий код 1,0001101.

Зворотний код. Зворотний код для позитивного числа збігається з прямим кодом. Для негативного числа всі цифри числа замінюються на протилежні (1 на 0, 0 на 1), а в знаковий розряд заноситься одиниця.

Для числа +1101 прямий код 0,0001101; зворотний код 0,0001101.
Для числа -1101 прямий код 1,0001101; зворотний код 1,1110010.

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

2.2 Особливості складання чисел в зворотному і додатковому кодах.

При додаванні чисел в додатковому коді виникає одиниця перенесення в знаковому розряді відкидається.

При додаванні чисел в зворотному коді виникає одиниця перенесення в знаковому розряді додається до молодшого розряду суми кодів.

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

Скласти двійкові числа X і Y в зворотному і додатковому кодах.

1) Складемо числа, користуючись правилами двійкової арифметики:

2) Складемо числа, використовуючи коди:

Додавання в зворотному
коді

Додавання в додатковому
коді

Так як результат складання є кодом позитивного числа (знак 0), то (X + Y) обр = (X + Y) доп = (X + Y) тощо.

1) Складемо числа, користуючись правилами двійкової арифметики:

2) Складемо числа, використовуючи коди:

Додавання в зворотному
коді

Додавання в додатковому
коді

Так як сума є кодом негативного числа (знак 1), то необхідно перевести результати в прямий код:
- з зворотного коду
(X + Y) обр = 1,1110100 (X + Y) пр = 1,0001011;
- з додаткового коду
(X + Y) доп = 1,1110101 (X + Y) пр = 1,0001010 + 0,0000001 = 1,0001011.
Таким чином, X + Y = -1011 і отриманий результат збігається зі звичайною записом.

2.3 Модифіковані зворотний і додатковий коди.

При переповненні розрядної сітки, відбувається перенесення одиниці в знаковий розряд. Це призводить до неправильного результату, причому позитивне число, що вийшло в результаті арифметичної операції може сприйматися як негативне (так як в знаковому розряді "1") і навпаки.

Тут X і Y - коди позитивних чисел, але ЕОМ сприймає результат їх складання як код негативного числа ( "1" в знаковому розряді). Для виявлення переповнення розрядної сітки вводяться модифіковані коди.

У модифікованому зворотному і модифікованому додатковому кодах під знак числа відводиться не один, а два розряду: "00" відповідає знаку "+", "11" - знаку "-". Будь-яка інша комбінація ( "01" або "10"), що вийшла в знакових розрядах служить ознакою переповнення розрядної сітки. Додавання чисел в модифікованих кодах нічим не відрізняється від складання в звичайних зворотному і додатковому кодах.

Розглянемо попередній приклад, виконавши складання в модифікованому зворотному коді:

Комбінація "01" в знакових розрядах означає, що сталося переповнення і отриманий результат - невірний.

Розглянемо ще один приклад.
Приклад. Дано два числа: X = 101001 і Y = -11010. Скласти їх в модифікованому додатковому коді.

1) Переведемо X і Y в модифікований додатковий код:

Схожі статті