Кодування чисел

У повсякденному житті ми звикли записувати числа в десятковій системі, у якій ми використовуємо десять різних цифр, а їх положення відповідає степеням десяти. Так, наприклад, 358 означає вісім одиниць, п’ять десятків і три сотні. Це один із багатьох можливих способів кодування.
Як ми можемо закодувати 358 інакше? Наприклад, намалювавши триста п’ятдесят вісім рисок поруч. Або ми могли б погодитися, що дракон позначатиме сто, свиня – п’ятдесят, а заєць – два. Тоді ми могли б представити 358 зображенням трьох драконів, свині та чотирьох зайців.
Комп’ютери, однак, не користуються драконами і поросятками для кодування. Навіть десяткова система не підходить для комп’ютерів, тому що в комп’ютерів немає десяти пальців. З іншого боку, комп’ютери можуть добре розрізняти два стани (активний і неактивний). Тому для кодування чисел у комп’ютері в основному застосовується двійкова система, в якій використовуються тільки дві цифри: 0 і 1.
Основний принцип [двійкової системи] (https://www.znaiemoinformatyku.org/dviikovi-chysla-osnovy) не є специфічним для комп’ютерів. Це математичний принцип «позиційної системи», який працює в цілому. Ви можете використовувати його, наприклад, для лічби на пальцях, що дозволяє рахувати від 0 до 31 на пальцях однієї руки. Також підрахунок у двійковій системі (додавання, віднімання, множення) — це загальний принцип, який працює так само, як підрахунок у нашій звичній десятковій системі.
Для кодування від’ємних і десяткових чисел необхідно вдатися до деталей, дещо специфічних для комп’ютерів (скільки біт пам’яті виділяємо для номерів, як саме будемо їх використовувати).
Крім двійкової системи, в інформатиці ми іноді зустрічаємо системи, засновані на ступенях двійки, наприклад, вісімкову або шістнадцяткову систему. Зокрема, шістнадцяткову (гексадецимальну) систему часто можна зустріти під час роботи з кольорами RGB.
ВгоруДвійкові числа: основи
Принцип двійкової системи
У двійковій системі ми записуємо числа, використовуючи тільки дві цифри: 0 і 1. Положення кожної цифри в записі відповідає певному степеню двійки. Степені завжди починаються з нульового ступеня крайньої правої цифри і зростають ліворуч. Потім ми обчислюємо значення двійкового числа як суму цих степенів. Ми враховуємо кожен ступінь, якщо у відповідній позиції є 1, або не враховуємо, якщо в даній позиції є 0.

Маркування систем
Щоб розрізнити, чи йде мова про число у двійковій чи десятковій системі, ми додаємо нижні індекси до чисел, що позначають систему. Наприклад, число 5 у десятковій системі буде записано як 5_{10}, двійкове число зі значенням 5 буде записано як 101_2. Тоді ми можемо чітко визначити, що, наприклад, під нотацією 11_{10} ми маємо на увазі десяткове число 11, тоді як нотація 11_2 буде інтерпретуватися як двійкове число 11 і, отже, як десяткове число 3.
Інтуїтивна підказка
Щоб отримати базове уявлення про двійкові числа, ми можемо використовувати інструмент, який у нас завжди під рукою, а саме саму руку. Уявімо, що ми пишемо на пальцях степені двійки:

Тоді ми можемо рахувати на пальцях однієї руки не тільки до п’яти, але й до тридцяти одного. Кожне число можна виразити (однозначно) як суму степенів двійки. Якщо позначити положення пальців нулями й одиницями, то отримаємо запис у двійковій системі.
Приклади
| десяткова | сума чисел | двійкова |
|---|---|---|
| 1 | 1 | 1 |
| 2 | 2 | 10 |
| 3 | 2+1 | 11 |
| 4 | 4 | 100 |
| 5 | 4+1 | 101 |
| 6 | 4+2 | 110 |
| 7 | 4+2+1 | 111 |
| 8 | 8 | 1000 |
| 9 | 8+1 | 1001 |
| 10 | 8+2 | 1010 |
| 16 | 16 | 10 000 |
| 20 | 16+4 | 10 100 |
| 30 | 16+8+4+2 | 11 110 |
Двійкові числа: арифметика
Якщо ми засвоїмо основний принцип двійкової системи, ми можемо приступити до арифметичних операцій.
Додавання двійкових чисел
Ми можемо складати двійкові числа подібним чином, як ми звикли складати числа в десятковій системі. Єдина різниця виникає, якщо ми додаємо дві одиниці. Оскільки 1_2 + 1_2 = 10_2, у цьому випадку ми пишемо 0 і переносимо 1 до вищого порядку.

Віднімання двійкових чисел
Аналогічним чином працює віднімання двійкових чисел. Перенос відбувається тільки при підрахунку різниці 0_2 – 1. У цьому випадку ми «позичаємо» одиницю з вищого порядку, ніби ми рахуємо 10_2 – 1_2. Потім пишемо 1 і в наступному рядку додатково віднімаємо те, що позичили.

Множення двійкових чисел
Множення двійкових чисел також майже таке саме, як і десяткових чисел. Ми множимо так, ніби в нас є два десяткових числа, які складаються тільки з нулів і одиниць. Додавання рядків, отриманих у результаті множення, потім відбувається як двійкове додавання, яке описано вище.
Якщо в нас є двійкове число для помноження на ступінь двійки, ми можемо значно полегшити нашу роботу. Все, що вам потрібно зробити, це додати в кінець числа стільки нулів, скільки у степені двійки ми множимо. Наприклад, при множенні на два додаємо 1 нуль (2 = 2^1), при множенні на вісім додаємо 3 нулі (8 = 2^3). Поділити ціле число на двійку також легко, просто видаліть із дільника стільки останніх цифр, скільки буде двійка, на яку ми ділимо.
ВгоруШістнадцяткова система числення
Шістнадцяткові числа — числа, записані в шістнадцятковій (гексадецимальній) системі. Ця система використовує 16 символів (0-9 і A-F, де A-F означає числа від десяти до п’ятнадцяти).
Шістнадцяткові числа тісно пов’язані з двійковою системою. Кожен символ у шістнадцятковій формі представляє чотири біти у двійковій системі, що полегшує перехід між двома системами. Будь-яке шістнадцяткове число можна перетворити на двійкове, призначивши чотири біти кожному шістнадцятковому символу.
Приклади перетворення чисел
- Шістнадцяткове число 1A відповідає двійковому числу 00011010, оскільки 1 = 0001, а A = 10 = 1010. У десятковій системі числення 1A відповідає числу 26 (1 \cdot 16 + 10).
- Десяткове число 255 можна виразити в шістнадцятковій формі як FF, де F означає п’ятнадцять.
Шістнадцяткові числа часто використовуються для відображення кольорів, наприклад, у моделі RGB. Кожен компонент кольору (червоний, зелений, синій) представлений вісьмома бітами, що відповідає двом шістнадцятковим цифрам. Так, червоний колір із повною інтенсивністю буде записаний як #FF0000, де FF означає максимальне значення червоного компонента.
Вгору