Як перевести двійкове число в десяткове (і hex): покроково
Щоб перевести двійкове число в десяткове, помножте кожен біт на вагу його розряду й додайте результати. Ваги розрядів — це степені двійки, які подвоюються справа наліво: 1, 2, 4, 8, 16 і так далі. Наприклад, двійкове 1011 дорівнює 1×8 + 0×4 + 1×2 + 1×1 = 8 + 0 + 2 + 1 = 11.
Спробуйте безкоштовно: Конвертер основ цілих чисел Безкоштовно, без реєстрації.
У цьому посібнику показано, як перевести двійкове число в десяткове двома способами, як виконати зворотне переведення з десяткової системи у двійкову, що таке шістнадцяткова система і чому нею користуються програмісти, а також як переходити між двійковою, шістнадцятковою та вісімковою системами без калькулятора. Кожен приклад нижче перевірено кодом. Щоб перевіряти власні числа під час читання, вставте їх у безкоштовний двійковий конвертер.
Як читати двійкові числа: ваги розрядів
Двійковий код — це інформація, записана лише двома символами, 0 і 1. Комп’ютери використовують його, бо їхні схеми працюють із двома станами, наприклад низькою та високою напругою. Кожна двійкова цифра називається бітом, а група з 8 бітів — байтом.
Двійкова система позиційна, так само як десяткова. У десятковій системі кожен розряд важить у 10 разів більше, ніж розряд праворуч від нього (одиниці, десятки, сотні). У двійковій кожен розряд важить у 2 рази більше, ніж розряд праворуч:
| Позиція (справа) | 8-ма | 7-ма | 6-та | 5-та | 4-та | 3-тя | 2-га | 1-ша |
|---|---|---|---|---|---|---|---|---|
| Степінь двійки | 2⁷ | 2⁶ | 2⁵ | 2⁴ | 2³ | 2² | 2¹ | 2⁰ |
| Вага розряду | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 означає «врахувати цю вагу», а 0 — «пропустити її».
Як перевести двійкове число в десяткове крок за кроком
Спосіб 1: додайте ваги розрядів
Візьмімо двійкове число 11010110. Запишіть під бітами ваги розрядів, залиште ті, де біт дорівнює 1, і додайте їх:
| Біт | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Вага розряду | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
| Біт × вага | 128 | 64 | 0 | 16 | 0 | 4 | 2 | 0 |
128 + 64 + 16 + 4 + 2 = 214. Отже, 11010110₂ = 214₁₀. Маленький нижній індекс вказує основу системи числення, коли вона не очевидна.
Спосіб 2: подвоюйте й додавайте
Для цього способу таблиця не потрібна. Почніть із 0 і читайте біти зліва направо: подвоюйте поточну суму й додавайте поточний біт.
Для 101101:
- 0 × 2 + 1 = 1
- 1 × 2 + 0 = 2
- 2 × 2 + 1 = 5
- 5 × 2 + 1 = 11
- 11 × 2 + 0 = 22
- 22 × 2 + 1 = 45
Отже, 101101₂ = 45. Перевірка способом 1: 32 + 8 + 4 + 1 = 45.
Як перевести десяткове число у двійкове
Послідовне ділення на 2
Поділіть число на 2, запишіть остачу (0 або 1) і повторюйте з часткою, доки вона не стане 0. Потім прочитайте остачі знизу вгору. Ось приклад для 156:
| Ділення | Частка | Остача |
|---|---|---|
| 156 ÷ 2 | 78 | 0 |
| 78 ÷ 2 | 39 | 0 |
| 39 ÷ 2 | 19 | 1 |
| 19 ÷ 2 | 9 | 1 |
| 9 ÷ 2 | 4 | 1 |
| 4 ÷ 2 | 2 | 0 |
| 2 ÷ 2 | 1 | 0 |
| 1 ÷ 2 | 0 | 1 |
Читаючи знизу вгору, отримуємо 156 = 10011100₂. Перевірка: 128 + 16 + 8 + 4 = 156. Найпоширеніша помилка — читати остачі згори вниз, тоді біти виходять у зворотному порядку.
Віднімання степенів двійки
Для невеликих чисел часто швидше взяти найбільший степінь двійки, що вміщується в число, відняти його й повторити. Для 100: вміщується 64 (100 − 64 = 36), далі 32 (36 − 32 = 4), далі 4 (4 − 4 = 0). Поставте 1 під 64, 32 і 4, а 0 — у всіх інших розрядах: 100 = 1100100₂.
Що таке шістнадцяткова система?
Шістнадцяткова система (hex) має основу 16. Їй потрібно 16 цифр, тому після 0–9 вона використовує літери A–F для значень від 10 до 15: A = 10, B = 11, C = 12, D = 13, E = 14, F = 15. Кожен розряд важить у 16 разів більше, ніж розряд праворуч: 1, 16, 256, 4 096 і так далі.
Програмісти використовують hex, бо ця система точно узгоджується з двійковою. Чотири біти мають 16 можливих комбінацій (від 0000 до 1111), тому одна шістнадцяткова цифра — це рівно 4 біти, а дві шістнадцяткові цифри — рівно один байт. Найбільший байт, 11111111, у шістнадцятковій системі — просто FF, а в десятковій — 255, число, з якого не видно бітового шаблону. Саме тому адреси пам’яті, коди кольорів, MAC-адреси та IPv6-адреси записують у hex.
Як перевести шістнадцяткове число в десяткове
Застосуйте той самий метод ваг розрядів зі степенями 16 і замініть літери їхніми значеннями:
- 2F = 2 × 16 + 15 × 1 = 32 + 15 = 47
- 1A3 = 1 × 256 + 10 × 16 + 3 × 1 = 256 + 160 + 3 = 419
Як перевести десяткове число в шістнадцяткове
Переведення з десяткової в шістнадцяткову систему виконується так само, як із десяткової у двійкову, але ділити потрібно на 16. Остачі від 10 до 15 стають літерами від A до F. Ось приклад для 1000:
| Ділення | Частка | Остача |
|---|---|---|
| 1000 ÷ 16 | 62 | 8 |
| 62 ÷ 16 | 3 | 14 = E |
| 3 ÷ 16 | 0 | 3 |
Прочитавши остачі знизу вгору, отримуємо 1000 = 3E8₁₆. Перевірка: 3 × 256 + 14 × 16 + 8 = 768 + 224 + 8 = 1000.
З двійкової в шістнадцяткову: групуйте біти по чотири
Оскільки одна шістнадцяткова цифра — це чотири біти, переведення з двійкової системи в шістнадцяткову взагалі не потребує обчислень. Розбийте двійкове число на групи по чотири біти (їх називають ніблами), починаючи справа, і замініть кожну групу за цією таблицею:
| Двійкова | Шістнадцяткова | Десяткова | Двійкова | Шістнадцяткова | Десяткова |
|---|---|---|---|---|---|
| 0000 | 0 | 0 | 1000 | 8 | 8 |
| 0001 | 1 | 1 | 1001 | 9 | 9 |
| 0010 | 2 | 2 | 1010 | A | 10 |
| 0011 | 3 | 3 | 1011 | B | 11 |
| 0100 | 4 | 4 | 1100 | C | 12 |
| 0101 | 5 | 5 | 1101 | D | 13 |
| 0110 | 6 | 6 | 1110 | E | 14 |
| 0111 | 7 | 7 | 1111 | F | 15 |
Приклади:
- 11010110 → 1101 0110 → D6 (і D6 = 13 × 16 + 6 = 214, те саме число, що й вище)
- 101101 → доповнюємо зліва до 0010 1101 → 2D (= 45)
Переведення з шістнадцяткової у двійкову працює у зворотному напрямку: замініть кожну шістнадцяткову цифру її чотирма бітами. 3E8 → 0011 1110 1000 → 1111101000 після відкидання початкових нулів.
Коротко про вісімкову систему
Вісімкова система має основу 8 і використовує цифри 0–7. Вона працює як hex, але з групами по три біти, бо 2³ = 8. Найвідоміше її застосування сьогодні — права доступу до файлів в Unix. У chmod 755 кожна цифра — це три біти прав (читання, запис, виконання):
- 7 = 111 = rwx
- 5 = 101 = r-x
- 5 = 101 = r-x
Отже, вісімкове 755 — це бітовий шаблон 111 101 101, тобто 493 у десятковій системі. Калькулятор Chmod перетворює позначені прапорці прав на вісімкове число або показує, які права встановлює число на кшталт 755.
Де трапляються ці перетворення
- IPv4-адреси. Кожне з чотирьох чисел — це один байт. 192.168.1.10 у двійковому вигляді — 11000000.10101000.00000001.00001010; 192 = 128 + 64.
- Кольори у вебі. Шістнадцятковий колір на кшталт #FF8800 складається з трьох байтів: червоний FF = 255, зелений 88 = 8 × 16 + 8 = 136, синій 00 = 0, тож він дорівнює rgb(255, 136, 0). Конвертер кольорів робить це для будь-якого кольору.
- Текст. В ASCII та Unicode велика літера A має код 65, тобто 0x41 у шістнадцятковій і 01000001 у двійковій системі. Мала a — це 97 (0x61, 01100001); ці два коди відрізняються на 32, тобто лише одним бітом.
Префікси: 0b, 0x і 0o
У коді префікс повідомляє компілятору, в якій системі числення записано числовий літерал:
| Префікс | Основа | Приклад | Десяткове значення |
|---|---|---|---|
0b |
Двійкова (2) | 0b1011 |
11 |
0o |
Вісімкова (8) | 0o755 |
493 |
0x |
Шістнадцяткова (16) | 0x3E8 |
1000 |
0x працює майже в усіх мовах. 0b підтримують Python, JavaScript, Java, C# і C++. 0o використовують Python і JavaScript, тоді як C і C++ записують вісімкові числа просто з початковим нулем, тож 0755 у C — це 493, а не 755.
Більшість мов також уміють перетворювати рядки:
# Python
int("1011", 2) # 11
bin(156) # '0b10011100'
hex(1000) # '0x3e8'
int("3E8", 16) # 1000
// JavaScript
parseInt("1011", 2) // 11
(1000).toString(16) // "3e8"
Number("0b1011") // 11
Одна пастка: у JavaScript parseInt("0b1011") повертає 0, бо parseInt зупиняється на першому символі, який не може прочитати, і не розуміє префікса 0b. Приберіть префікс і передайте основу (radix) окремо, як пояснено в довіднику MDN щодо parseInt.
Кілька слів про від’ємні числа
Комп’ютери зазвичай зберігають від’ємні цілі числа в доповняльному коді. Щоб записати −5 у 8 бітах, почніть із 5 = 00000101, інвертуйте кожен біт і отримайте 11111010, а потім додайте 1: 11111011. Якщо прочитати цей самий шаблон як беззнакове число, це 251 (256 − 5), або FB у hex. Тому той самий байт може означати −5 або 251 залежно від того, чи вважає програма його знаковим.
Таблиця переведення між двійковою, десятковою, вісімковою та шістнадцятковою системами
| Десяткова | Двійкова | Вісімкова | Шістнадцяткова |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 |
| 2 | 10 | 2 | 2 |
| 3 | 11 | 3 | 3 |
| 4 | 100 | 4 | 4 |
| 5 | 101 | 5 | 5 |
| 6 | 110 | 6 | 6 |
| 7 | 111 | 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 |
| 16 | 10000 | 20 | 10 |
| 32 | 100000 | 40 | 20 |
| 64 | 1000000 | 100 | 40 |
| 100 | 1100100 | 144 | 64 |
| 127 | 1111111 | 177 | 7F |
| 128 | 10000000 | 200 | 80 |
| 255 | 11111111 | 377 | FF |
| 256 | 100000000 | 400 | 100 |
Переводьте числа між будь-якими системами за допомогою двійкового конвертера
Безкоштовний двійковий конвертер працює у вашому браузері. Введіть число й укажіть його основу, і він одразу покаже значення у двійковій, вісімковій, десятковій та шістнадцятковій системах, а також в одній довільній вихідній основі.
- Будь-яка основа від 2 до 64 — і для введення, і для довільної вихідної основи.
- Префікси та великі літери: він приймає
0b,0oі0x, якщо вони відповідають основі введення, а також великі літери на кшталтFFдо основи 36. Для основ понад 36 малі й великі літери — різні цифри. - Зрозумілі помилки: для недопустимої цифри, наприклад 2 у двійковому числі, він показує, які цифри дозволяє основа, а префікс
0xпри основі 10 підказує змінити основу на 16. - Довжина в бітах: він показує, скільки бітів потрібно числу, наприклад 6 для 42 (101010).
- Великі числа: він точно перетворює дуже довгі цілі числа, наприклад повну 128-бітну IPv6-адресу, записану як одне число.
Кілька обмежень, про які варто знати: він перетворює лише невід’ємні цілі числа, тож знак мінус або десяткова кома відхиляються; шістнадцятковий результат виводиться малими літерами й без початкових нулів; а рядок «Base64 (64)» — це число в системі з основою 64, що використовує цифри 0–9, a–z, A–Z, + і /, а не текстове кодування Base64.
Часті запитання
Яке найбільше число можна зберегти у 8 бітах?
255, що записується як 11111111 у двійковій системі або FF у шістнадцятковій. Вісім бітів дають 2⁸ = 256 різних комбінацій, які охоплюють числа від 0 до 255. Шістнадцять бітів сягають 65 535, і кожен додатковий біт подвоює діапазон.
Чому програмісти використовують шістнадцяткову систему замість десяткової?
Оскільки кожна шістнадцяткова цифра відповідає рівно чотирьом бітам, бітовий шаблон можна прочитати безпосередньо з шістнадцяткових цифр. Байт завжди складається з двох шістнадцяткових цифр (від 00 до FF). У десятковій системі такої відповідності немає: 255 і 256 у десятковому записі схожі, але у двійковому це 11111111 і 100000000.
Як перевести двійковий дріб у десятковий?
Біти після двійкової коми мають ваги 1/2, 1/4, 1/8 і так далі. Отже, 101.11₂ = 4 + 1 + 0,5 + 0,25 = 5,75. Багато десяткових дробів, наприклад 0,1, не мають точного двійкового представлення, тому в більшості мов програмування 0.1 + 0.2 не дорівнює точно 0.3. Двійковий конвертер працює лише з цілими числами.
Двійковий код — це те саме, що ASCII?
Ні. Двійкова система — це система числення; ASCII — це таблиця, яка призначає кожному символу число. Літера A має код ASCII 65, і це число зберігається як біти 01000001.
Спробуйте безкоштовно: Конвертер основ цілих чисел Безкоштовно, без реєстрації.