Конвертер систем счисления
Двоичная, восьмеричная, десятичная, шестнадцатеричная — и любое основание от 2 до 36. Плюс битовое представление с дополнительным кодом и побитовые операции AND/OR/XOR/NOT/сдвиги. Числа любой длины, всё вычисляется прямо в браузере.
Число
Битовое представление
Разрядность и знак здесь общие для этого блока и блока побитовых операций ниже.
Побитовые операции
A берётся из поля «Значение» выше, разрядность и знак — из блока «Битовое представление».
Как это работает
Число разбирается по цифрам выбранного основания (например, для шестнадцатеричного — 0–9 и A–F) и переводится во внутреннее представление произвольной точности (BigInt), после чего выводится в любом другом основании стандартной операцией перевода в строку — точность не теряется даже для очень длинных чисел.
Блок «Битовое представление» показывает, как число ляжет в фиксированное число бит (разрядность) — так, как оно хранилось бы в памяти компьютера. Для отрицательных чисел используется дополнительный код: чтобы его получить, достаточно найти остаток от деления на 2 в степени разрядности — это ровно то, что делает инструмент. Если число не помещается в выбранный диапазон, появляется предупреждение о переполнении, а показанное значение — то самое, что получилось бы «по модулю» в реальной программе.
Побитовые операции (AND/OR/XOR/NOT/сдвиги) выполняются над битовым паттерном числа A (и B, где нужно) в выбранной разрядности: сначала оба числа приводятся к этой разрядности, затем применяется операция к каждому биту, а результат заново интерпретируется как число — с учётом знака, если он выбран. Сдвиг вправо для чисел со знаком — арифметический (сохраняет знак, заполняя старшие биты копией знакового), для беззнаковых — логический (заполняет нулями).
Частые вопросы
Есть ли ограничение на длину числа?
Нет — используется BigInt, число может быть произвольно длинным без потери точности.
Что такое дополнительный код?
Стандартный способ хранить отрицательные числа в фиксированной разрядности: старший бит — знаковый, а код числа — остаток от деления по модулю 2 в степени разрядности.
Чем логический сдвиг вправо отличается от арифметического?
Логический заполняет освободившиеся биты нулями (для беззнаковых), арифметический сохраняет знак (для чисел со знаком) — тип выбирается автоматически по переключателю «Знак».
Что значит предупреждение о переполнении?
Число не помещается в выбранную разрядность и знак — показано значение «по модулю», как было бы при реальном переполнении.