Що таке позиційна система
У десятковому числі 4 095 цифра 4 означає не 4, а 4 000, бо стоїть на місці тисяч. Кожна позиція множить цифру на степінь десятки (1, 10, 100, 1 000…). Це і є позиційна система, а основа — це кількість різних цифр, які в ній використовують: у десятковій їх десять.
Двійкова система працює так само, але з основою 2: існують лише 0 і 1, і кожне місце важить удвічі більше за попереднє. Шістнадцяткова використовує основу 16: шістнадцять цифр — це від 0 до 9 та літери від A до F, і кожне місце важить у 16 разів більше за попереднє. Комп'ютери працюють у двійковій системі, бо схемі достатньо розрізняти лише два стани (вимкнено й увімкнено), а шістнадцяткова — це короткий спосіб записати ці біти.
| Позиція (справа наліво) | Значення в двійковій | Значення в шістнадцятковій |
|---|---|---|
| 1-ша | 1 | 1 |
| 2-га | 2 | 16 |
| 3-тя | 4 | 256 |
| 4-та | 8 | 4 096 |
| 5-та | 16 | 65 536 |
| 6-та | 32 | 1 048 576 |
| 7-ма | 64 | 16 777 216 |
| 8-ма | 128 | 268 435 456 |
Від двійкової до десяткової вручну
Кожну цифру записують разом зі значенням її місця й додають лише ті місця, де стоїть 1. Приклад із 1101: справа наліво місця важать 1, 2, 4 і 8.
- Запишіть число, а під ним значення кожної позиції: 1 1 0 1 над 8 4 2 1.
- Подивіться, що стоїть на кожному місці: 1 на місці 8, 1 на місці 4, 0 на місці 2 і 1 на місці 1.
- Пропустіть місця з нулем (тут це місце 2).
- Додайте: 8 + 4 + 0 + 1 = 13. Отже, 1101 у двійковій системі — це 13 у десятковій.
З більшою кількістю цифр усе так само: 11111111 — це 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255, найбільше значення, що вміщується у 8 бітів. А 10110110 — це 128 + 32 + 16 + 4 + 2 = 182.
Від десяткової до двійкової послідовним діленням
Число ділять на 2 знову й знову, записуючи остачу від кожного ділення (завжди 0 або 1), доки частка не стане 0. Остачі, прочитані знизу вгору, і є двійковим числом. Приклад із 45:
- 45 ÷ 2 = 22, остача 1
- 22 ÷ 2 = 11, остача 0
- 11 ÷ 2 = 5, остача 1
- 5 ÷ 2 = 2, остача 1
- 2 ÷ 2 = 1, остача 0
- 1 ÷ 2 = 0, остача 1
Якщо прочитати остачі знизу вгору, вийде 101101. Для перевірки додайте: 32 + 8 + 4 + 1 = 45.
Є й альтернативний метод, який багатьом подобається більше: віднімати степені двійки від більшої до меншої. Для 200: 128 підходить (залишається 72), 64 підходить (залишається 8), 32 і 16 не підходять, а 8 підходить (залишається 0). Використані місця — 128, 64 і 8, тому 200 = 11001000.
Шістнадцяткова: шістнадцять цифр і таблиця під рукою
Оскільки цифр для 10–15 не існує, використовують літери A, B, C, D, E і F. Одна шістнадцяткова цифра дорівнює рівно чотирьом бітам («нібл»), і саме тому вона така зручна: байт із 8 бітів записують лише двома шістнадцятковими цифрами.
Щоб перейти від шістнадцяткової до десяткової, помножте кожну цифру на степінь 16 її місця й додайте. Наприклад, 3F = 3 × 16 + 15 = 63, а A3 = 10 × 16 + 3 = 163.
| Десяткова | Двійкова (4 біти) | Вісімкова | Шістнадцяткова |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
Навіщо потрібна шістнадцяткова: байти, кольори й адреси
Байт — це 8 бітів, він має значення від 0 до 255 (від 00000000 до 11111111). Записувати біти вручну повільно й легко помилитися; у шістнадцятковій той самий байт — це два символи, від 00 до FF. Щоб перейти від двійкової до шістнадцяткової, розбийте біти на групи по чотири справа й замініть кожну групу цифрою з таблиці. Приклад: 11010111 розбивається на 1101 і 0111, тобто D і 7, отже значення — D7. У десятковій це 13 × 16 + 7 = 215.
Найвідоміший випадок — веб-кольори. У #FF8800 є три байти: FF для червоного (255), 88 для зеленого (136) і 00 для синього (0). Це насичений помаранчевий: увесь червоний, трохи більше половини зеленого й жодного синього. Шістнадцяткову систему також використовують в адресах пам'яті, кодах помилок та мережевих ідентифікаторах.
Від тексту до двійкового коду через ASCII
Комп'ютер зберігає кожну літеру як число, а це число — як біти. У таблиці ASCII літера A — це 65, що у двійковій системі з 8 бітів дорівнює 01000001. Слово «Hi» — це дві літери: H має код 72 (01001000), а i — 105 (01101001), тож записується як 01001000 01101001. Слово «Hola» — це 72, 111, 108 і 97, тобто 01001000 01101111 01101100 01100001, або в шістнадцятковій 48 6F 6C 61.
Інструмент використовує кодування UTF-8: для основних англійських літер кожен символ займає один байт із 8 бітів, але українська літера, символ із діакритикою чи емодзі займають кілька байтів, тож дають понад 8 бітів. Наприклад, літера ñ — це два байти: 11000011 10110001 (C3 B1 у шістнадцятковій).
Як зробити все це за допомогою інструмента
Конвертер «Двійкове, десяткове та hex» допоможе перевірити ваші ручні обчислення або розв'язати довгі числа без помилок.
- Введіть число в поле його системи: «Десяткова (основа 10)», «Двійкова (основа 2)», вісімкова або «Шістнадцяткова (основа 16)». Решта трьох заповняться самі.
- Якщо цифра не підходить для системи (наприклад, 2 у двійковій), інструмент повідомить про це.
- Для тексту введіть його в поле «Текст» і подивіться «Двійковий код (8 біт на символ)» та шістнадцятковий код за байтами. Також можна вставити біти групами по 8, щоб повернутися до тексту.
- Для незвичних систем скористайтеся «Будь-яка система числення (від 2 до 36)»: ви вибираєте початкову основу, кінцеву й вводите число.
Обмеження: інструмент перетворює лише невід'ємні цілі числа (без десяткових знаків і знака) і не додає нулі зліва за вас, тож якщо потрібні рівно 8 бітів, доповніть вручну (13 — це 00001101). Нічого з того, що ви вводите, не залишає вашого браузера.
Типові помилки
- Читати остачі навпаки: під час послідовного ділення перша остача — це найправіша цифра, а не найлівіша.
- Забувати про нулі зліва, коли вони потрібні: 13 — це 1101, але як байт — 00001101. Це важливо, коли довжина є частиною даних, як у кольорі чи мережевій масці.
- Плутати літеру O з нулем або шістнадцяткову B (11) з вісімкою під час копіювання. У шістнадцятковій велика й мала літери мають однакове значення, але це не те саме, що цифра.
- Залишати префікс 0x або знак # під час переведення: це лише позначки того, що число шістнадцяткове, і їх треба прибрати перед вставленням.
- Думати, що 10 у двійковій — це десять: це два. Те саме «10» дорівнює 2, 10 або 16 залежно від системи.
Розв'язані вправи для практики
Спробуйте розв'язати кожну, перш ніж дивитися відповідь, а потім перевірте за допомогою інструмента.
- Переведіть 10110110 у десяткову й шістнадцяткову. Відповідь: 128 + 32 + 16 + 4 + 2 = 182; групами по чотири 1011 0110 = B6.
- Переведіть 200 у двійкову й шістнадцяткову. Відповідь: 11001000 і C8 (12 × 16 + 8 = 200).
- Переведіть 7F у двійкову. Відповідь: 7 = 0111, а F = 1111, отже 01111111, що в десятковій дорівнює 127.
- Запишіть «OK» у двійковій. Відповідь: O — це 79, а K — 75, тобто 01001111 01001011.
Поширені запитання
Як перевести 1101 із двійкової в десяткову?
Додайте значення місць, де стоїть 1: 8 + 4 + 1 = 13. Друга цифра справа — це 0, тому 2 не додається.
Скільки буде 255 у двійковій і шістнадцятковій?
255 — це 11111111 у двійковій і FF у шістнадцятковій. Це найбільше значення, що вміщується в байт із 8 бітів.
Чому в шістнадцятковій системі використовують літери?
Тому що потрібно шістнадцять різних символів, а десяткова система дає лише десять (від 0 до 9). Тому A дорівнює 10, B — 11, C — 12, D — 13, E — 14, а F — 15.
Скільки різних чисел можна записати за допомогою 8 бітів?
256, від 0 до 255. Загалом за допомогою n бітів можна подати 2 в степені n значень.
Чи перетворює інструмент від'ємні числа або числа з десятковими знаками?
Ні, лише невід'ємні цілі. Для тексту він використовує UTF-8, тому літери з діакритикою й емодзі дають понад 8 бітів.