Позиційні системи числення; беззнаковий та доповнювальний код цілих; арифметика
Розділ: Архітектура компʼютера
📌 Про що ця тема
Тут перевіряють, як компʼютер зберігає числа у двійковому вигляді та як переводить їх між системами числення (двійкова, вісімкова, десяткова, шістнадцяткова). Ключові поняття: позиційна система числення, основа системи, беззнаковий код і доповнювальний (додатковий) код для цілих зі знаком.
📖 Головне
• Позиційна система числення — значення цифри залежить від її позиції (розряду). Основа 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₈.