Двійкова, вісімкова, десяткова та hex — і будь-яка система до 36
Введіть число в двійковій, вісімковій, десятковій, шістнадцятковій або будь-якій системі від 2 до 36 і одразу побачите його в усіх інших. Числа можуть бути скільки завгодно великими — конвертер використовує цілі числа довільної точності, тож 64- чи 128-бітне значення зберігає кожну цифру, — а від'ємні числа показано в додатковому коді на 8, 16, 32, 64 і 128 біт, з виглядом бітів, де можна клацнути біт, щоб інвертувати його. Префікси на кшталт <code>0x</code> і роздільники на кшталт <code>1_000_000</code> розпізнаються. Усе працює у вашому браузері.
Як перевести число в іншу систему числення
- 1Виберіть систему, в якій вводите: Bin, Oct, Dec, Hex або Інша для будь-якої основи від 2 до 36.
- 2Введіть або вставте число. Знак мінус, префікси
0x,0bі0o, а також пробіли, підкреслення чи коми між цифрами приймаються. - 3Дивіться результат одразу в усіх системах, з цифрами, згрупованими для зручності. Виберіть іншу основу в останньому рядку або ввімкніть Усі основи 2–36.
- 4Перегляньте таблицю додаткового коду зі знаковим і беззнаковим значенням для кожної розрядності, клацайте біти у вигляді бітів, щоб інвертувати їх, і копіюйте потрібну форму.
Як влаштовані позиційні системи числення
У будь-якій системі кожна цифра важить основу в степені її позиції, рахуючи з нуля справа. У десятковій 255 — це 2×10² + 5×10¹ + 5×10⁰. У двійковій те саме число — 11111111: вісім одиниць, що дають 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1. У шістнадцятковій — FF: 15×16 + 15.
Основам понад 10 потрібно більше десяти символів, тож лік продовжують літери: A — це 10, B — 11 і так далі до Z для 35. Тому 36 — найбільша основа зі звичайними цифрами й літерами. Регістр літер не враховується.
Навіщо програмістам двійкова, вісімкова і hex
- Двійкова (основа 2)
- Так машина зберігає все. Зручна для бітових прапорців, масок і підмереж, але довга: 32-бітне значення має 32 цифри.
- Шістнадцяткова (основа 16)
- Кожна hex-цифра — рівно чотири біти, тож байт — це дві hex-цифри, а 32-бітне значення — вісім. Використовується для адрес пам'яті, кольорів (#FF8800), хешів, UUID і дампів байтів.
- Вісімкова (основа 8)
- Кожна вісімкова цифра — три біти. Збереглася переважно в правах доступу до файлів Unix, де 755 — це три групи бітів rwx; див. <a href="/chmod-calculator">калькулятор chmod</a>.
- Основа 36 і основа 62
- Компактні ідентифікатори без урахування регістру, як-от короткі URL та ID, використовують основу 36 (0–9 і a–z). Основа 62 додає великі літери й виходить за межі цього інструмента.
Додатковий код і від'ємні числа
Комп'ютери зберігають знакові цілі в додатковому коді: за фіксованої ширини n біт від'ємне число −x зберігається як 2ⁿ − x. На 8 бітах −1 — це 11111111 (0xFF), −128 — 10000000 (0x80), а старший біт водночас слугує знаком. 8-бітне знакове ціле вміщує від −128 до 127; ті самі 8 біт без знака — від 0 до 255.
Таблиця додаткового коду показує обидва прочитання для кожної поширеної розрядності. Введіть 0xFFFFFFFF — і побачите, що це 4 294 967 295 як беззнакове 32-бітне ціле та −1 як знакове; введіть -42 — і отримаєте його бітовий шаблон для кожної розрядності. Якщо значення не вміщується, рядок про це повідомляє, а не обрізає його мовчки.
Великі числа й точність
Звичайні числа JavaScript втрачають точність понад 2⁵³ (9 007 199 254 740 992), тому багато онлайн-конвертерів помиляються з 64-бітними ID і хешами. Цей конвертер скрізь використовує BigInt, тож точний для чисел будь-якого розміру — 128-бітного значення, хешу SHA-256, прочитаного як ціле, чи числа з 20 000 цифр.
Переводяться лише цілі числа. Дроби в інших системах рідко бувають скінченними (0,1 у десятковій — нескінченний періодичний дріб у двійковій), тож для бітових шаблонів чисел з рухомою комою та міток часу скористайтеся конвертером Unix timestamp.
Поширені запитання
- Як перевести двійкове число в десяткове?
- Виберіть Bin, введіть двійкове число й дивіться десятковий рядок. Вручну додайте степені двійки для кожної 1: 1011 — це 8 + 0 + 2 + 1 = 11.
- Як перевести десяткове число в шістнадцяткове?
- Виберіть Dec, введіть число й дивіться шістнадцятковий рядок. Вручну діліть на 16 і записуйте остачі від останньої до першої: 255 ÷ 16 = 15, остача 15, отже 255 — це FF.
- Що означає префікс 0x?
- 0x позначає шістнадцяткове число в C, JavaScript, Python і більшості інших мов, так само як 0b — двійкове, а 0o — вісімкове. Конвертер приймає ці префікси на вході й може додавати їх до результату.
- Як переводяться від'ємні числа?
- У кожній системі результат зберігає знак мінус, наприклад -2A у hex. Таблиця додаткового коду й вигляд бітів показують, як те саме число зберігається у знаковому 8-, 16-, 32-, 64- або 128-бітному цілому.
- Чому 0xFF показується і як 255, і як -1?
- Ті самі вісім бітів означають 255 як беззнаковий байт і -1 як знаковий байт у додатковому коді. Що правильно, залежить від типу, в якому зберігається значення.
- Чи є обмеження на розмір числа?
- Практично немає: числа до 20 000 цифр переводяться точно, бо конвертер використовує цілі довільної точності, а не числа з рухомою комою.
- Чи можна переводити дроби?
- Ні, лише цілі числа. Більшість дробів не мають точного подання в інших системах, тож конвертер просить ціле число, а не дає округлену відповідь.
- Чи надсилаються мої дані кудись?
- Ні. Усе переведення відбувається у вашому браузері.