Подання позитивних і негативних чисел в пам’яті комп’ютера
Інформатика як наука
прямий код
Прямий код - це уявлення числа в двійковій системі числення, при якому перший (старший) розряд відводиться під знак числа. Якщо число позитивне, то в лівий розряд записується 0; якщо число негативне, то в лівий розряд записується 1.
Таким чином, в двійковій системі числення, використовуючи прямий код, в Восьмирозрядних осередку (байті) можна записати семіразрядний число. наприклад:
0 0001101 - позитивне число
1 0001101 - негативне число
Кількість значень, які можна помістити в семіразрядний осередку зі знаком в додатковому розряді одно 256. Це збігається з кількістю значень, які можна помістити в Восьмирозрядних осередок без вказівки знака. Однак діапазон значень вже інший, йому належать значення від -128 до 127 включно (при перекладі в десяткову систему числення).
При цьому в обчислювальній техніці прямий код використовується майже виключно для представлення позитивних чисел.
Для негативних чисел використовується так званий додатковий код. Це пов'язано із зручністю виконання операцій над числами електронними пристроями комп'ютера.
додатковий код
У додатковому коді, також як і прямому, перший розряд відводиться для представлення знака числа. Прямий код використовується для представлення позитивних чисел, а додатковий - для представлення негативних. Тому, якщо в першому розряді знаходиться 1, то ми маємо справу з додатковим кодом і з негативним числом.
Всі інші розряди числа в додатковому коді спочатку інвертуються, тобто замінюються протилежними (0 на 1, а 1 на 0). Наприклад, якщо 1 0001100 - це прямий код числа, то при формуванні його додаткового коду, спочатку треба замінити нулі на одиниці, а одиниці на нулі, крім першого розряду. Отримуємо 1 1110011. Але це ще не остаточний вид додаткового коду числа.
Далі слід додати одиницю до одержали інверсією числу:
1 1110011 + 1 = 1 1110100
В результаті і виходить число, яке прийнято називати додатковим кодом числа.
Причина, по якій використовується додатковий код числа для представлення негативних чисел, пов'язана з тим, що так простіше виконувати математичні операції. Наприклад, у нас два числа, представлених в прямому коді. Одне число позитивне, інше - негативне і ці числа потрібно скласти. Однак просто скласти їх не можна. Спочатку комп'ютер повинен визначити, що це за числа. З'ясувавши, що одне число негативне, йому слід замінити операцію складання операцією віднімання. Потім, машина повинна визначити, яке число більше за модулем, щоб з'ясувати знак результату і визначитися з тим, що з чого віднімати. У підсумку, виходить складний алгоритм. Куди простіше складати числа, якщо негативні перетворені в додатковий код. Це можна побачити на прикладах нижче.
Операція складання позитивного числа і негативного числа, представленого в прямому коді
- Прямий код числа 5: 0 000 0101
Прямий код числа -7: 1 000 0111 - Два вихідних числа порівнюються. У розряд знака результату записується знак більшого вихідного числа.
- Якщо числа мають різні знаки, то замість операції додавання використовується операція вирахування з більшого по модулю значення меншого. При цьому перший (знаковий) розряд в операції участі не бере.
- Після виконання операції враховується перший розряд. Результат операції 1 000 0010, або -210.
Операція складання позитивного числа і негативного числа, представленого в додатковому коді
- Прямий код числа 5: 0 000 0101
Прямий код числа -7: 1 000 0111 - Формування додаткового коду числа -7.
Прямий код. 1 000 0111
Інверсія. 1 111 1000
Додавання одиниці: 1 111 1001 - Операція складання.
- Перевірка результату шляхом перетворення до прямого коду.
Додатковий код: 1 111 1110
Віднімання одиниці. 1 111 1101
Інверсія. 1 000 0010 (або -210)