Encoders & Utilities

Number Base Converter

Конвертує між двійковим, вісімковим, десятковим і шістнадцятковим. BigInt і bitwise з signed-шириною.

Про цей інструмент

Number Base Converter переводить integer між binary (base 2), octal (base 8), decimal (base 10) і hexadecimal (base 16). Введіть значення в будь-якому з чотирьох input-полів, інші три оновлюються синхронно. Arbitrary-precision-математика вбудована — вставте 1024-bit hash і все одно отримаєте точну відповідь, без floating-point-округлення.

Друга панель запускає bitwise-операції на тому ж значенні: AND, OR, XOR, NOT, left shift, right shift, arithmetic right shift. Для кожної операції ви обираєте integer-ширину (8/16/32/64 біти, signed або unsigned), щоб two's-complement-представлення показувались правильно — 0xFF — це 255 в u8, але -1 в i8, і інструмент маркує обидва. Live binary-preview підсвічує окремі bit-позиції, щоб ви бачили точно, що флипнуло.

Коли використовувати цей інструмент

  • Читання і запис config-флагів. Багато API використовують bitmask-флаги; конверсія 0b10110 у 22 або назад — щоденний податок на цей стиль.
  • Дебаг hex-dumps. Байт 0xC0 у пам'яті? Це 192 decimal, 0b11000000 binary.
  • Обрахунок color-значень. CSS hex-кольори, ANSI escape-коди і image-format byte-streams — усі живуть у hex.
  • Робота з file permissions. 0o7550b111101101 — конверсія — фундамент Chmod Calculator.

Про BigInt і signed widths

Нативний Number у JavaScript втрачає precision після 2^53. Ми використовуємо BigInt для самого значення, тож будь-який integer, що ви можете написати, влізає. Signed widths мають значення для негативних чисел: two's complement на 8 бітах каже 0b10000000 = -128; на 16 бітах той самий патерн — 32768. Інструмент завжди показує обидві інтерпретації, щоб правильна була під рукою.

Часті запитання

Чому 0xFF показано і як 255, і як -1?

Бо byte-pattern той самий — значення залежить від того, чи трактуєте його як unsigned (u8 = 255) чи signed two's-complement (i8 = -1). Hardware не знає, яке; type-system знає. Ми показуємо обидві інтерпретації, щоб ви могли прочитати значення так, як очікує ваш код. Для ширших integers (u32 vs i32) та сама логіка з різними break-points.

Якого розміру число може обробити інструмент?

Довільного — ми використовуємо JavaScript BigInt internally, тож 4096-bit RSA-ключі конвертяться так само легко, як 8-bit байти. Bitwise-ops-панель потребує ширини (8 до 64 біт, signed або unsigned) для two's-complement, щоб бути визначеним; за межами 64 біт ми трактуємо всі значення як unsigned і не показуємо негативні інтерпретації. Для криптографічно-масштабних чисел decimal/hex/binary все працює, але bitwise-таблиця розумно зупиняється на 64.

Яка конвенція префіксів?

Більшість екосистем сходяться: 0b для binary (Python, JS, Rust), 0o для octal (Python, JS, Rust — старіша форма bare-leading-zero застаріла), 0x для hex (універсально). Наш інструмент приймає inputs з префіксами або без і завжди emit-ить результати в конвенційній prefixed-формі. C/C++ використовує bare-leading-zero для octal (0755), що є footgun — ми ніколи не виводимо цю форму.

Чому shift-right поводиться інколи по-різному?

Існує два right-shifts: logical (>>>) заповнює high-bits нулями — для unsigned-значень. Arithmetic (>>) заповнює sign-бітом — зберігає знак негативних чисел у two's-complement. -8 >> 1 = -4 (arithmetic), але -8 >>> 1 = 2147483644 (logical, 32-bit). Інструмент експонує обидва як окремі кнопки.