Позиційні системи числення; беззнаковий та доповнювальний код цілих; арифметика

Розділ: Архітектура компʼютера

📌 Про що ця тема

Тут перевіряють, як компʼютер зберігає числа у двійковому вигляді та як переводить їх між системами числення (двійкова, вісімкова, десяткова, шістнадцяткова). Ключові поняття: позиційна система числення, основа системи, беззнаковий код і доповнювальний (додатковий) код для цілих зі знаком.


📖 Головне

• Позиційна система числення — значення цифри залежить від її позиції (розряду). Основа p — скільки різних цифр використовують.

• Двійкова (p=2, цифри 0–1), вісімкова (p=8, 0–7), десяткова (p=10), шістнадцяткова (p=16, цифри 0–9 та A–F, де A=10 … F=15).

• Значення числа = сума цифр, помножених на p у степені номера розряду (нумерація з 0 справа). Напр. 1011₂ = 1·8+0·4+1·2+1·1 = 11.

• З десяткової в p-систему — ділення націло на p, остачі виписують знизу вгору.

• Двійкова ↔ вісімкова: групуємо біти по 3 (бо 8=2³). Двійкова ↔ шістнадцяткова: по 4 (16=2⁴). Групуємо від коми вправо/вліво.

• Беззнаковий код (unsigned): усі біти — на величину. Для n бітів діапазон 0 … 2ⁿ−1.

• Доповнювальний код (two’s complement) зберігає числа зі знаком. Старший біт — знаковий: 0 — «+», 1 — «−». Діапазон для n бітів: −2ⁿ⁻¹ … 2ⁿ⁻¹−1.

• Отримати відʼємне число у доп. коді: взяти модуль у двійковому, інвертувати всі біти, додати 1.

• Головна перевага доп. коду: додавання і віднімання виконуються однаково, перенесення за межі розрядної сітки просто відкидається.


🔢 Як це працює на прикладі

Приклад 1. Перевести 45₁₀ у двійкову. Ділимо на 2: 45→22 (ост.1), 22→11 (0), 11→5 (1), 5→2 (1), 2→1 (0), 1→0 (1). Знизу вгору: 101101₂. Перевірка: 32+8+4+1=45. ✅

У шістнадцяткову: групуємо 101101 по 4 справа → 0010 1101 = 2D₁₆.


Приклад 2. Записати −6 у 8-бітному доп. коді. +6 = 00000110. Інвертуємо → 11111001. Додаємо 1 → 11111010. Це −6.

Перевірка додаванням 6+(−6): 00000110 + 11111010 = 1 00000000. Дев’ятий біт відкидаємо → 00000000 = 0. ✅


⚠️ Типові помилки

• Плутають напрям запису остач при переведенні: їх читають знизу вгору, а не зверху вниз.

• Групують біти для 8/16 системи не з того боку: групи формують від десяткової коми (для цілих — справа наліво).

• Забувають доповнити нулями зліва до повної групи (3 або 4 біти) при переведенні у 8/16 систему.

• Вважають старший біт у доп. коді частиною величини, а не знаком — тому неправильно читають відʼємні числа.

• При переведенні у відʼємний доп. код забувають крок «+1» після інверсії.


🎯 Що завчити напамʼять

• Основи: 2, 8, 10, 16; шістнадцяткові A=10, B=11, C=12, D=13, E=14, F=15.

• Беззнаковий діапазон: 0 … 2ⁿ−1. Доп. код: −2ⁿ⁻¹ … 2ⁿ⁻¹−1.

• 8=2³ → групи по 3; 16=2⁴ → групи по 4.

• Алгоритм доп. коду: модуль → інверсія → +1.


🧠 Перевір себе

1. Переведи 1D₁₆ у десяткову.

2. Який діапазон цілих зберігає 8-бітний доп. код?

3. Запиши −3 у 4-бітному доп. коді.

4. Переведи 110110₂ у вісімкову.


Відповіді: 1 — 1·16+13 = 29; 2 — від −128 до 127; 3 — +3=0011, інверсія 1100, +1 → 1101; 4 — групи по 3: 110 110 = 66₈.

Перевірити себе на практиці

Прочитати — половина справи. Далі потрібні завдання цієї ж теми з розбором кожної відповіді: саме на них видно, чи справді тема закрита.