Системы счисления и битовые сдвиги

Переводит число между десятичной, шестнадцатеричной, восьмеричной и двоичной системами и показывает результат сдвига влево и вправо на N бит.

Цифры выбранной системы. Допустимы знак минус, пробелы, подчёркивания и приставки 0x, 0o, 0b.
бит
Пусто — без сдвига. Целое число от 0 до 256.

Результат

Число в разных системах
Десятичная255
ШестнадцатеричнаяFF
Восьмеричная377
Двоичная1111 1111
Длина двоичной записи без знака
8 бит
Сдвиг влево (<<)
Десятичная2040
Шестнадцатеричная7F8
Восьмеричная3770
Двоичная0111 1111 1000
Сдвиг вправо (>>)
Десятичная31
Шестнадцатеричная1F
Восьмеричная37
Двоичная0001 1111
  • Результат сдвига не обрезается до разрядности переменной: в 8- или 32-разрядном регистре старшие биты исчезли бы.
255 0xFF 1111 1111

Десятичная: 255

Формула

  • x = Σ di · bi
  • x << N = x · 2N
  • x >> N = ⌊x / 2N⌋
Подробнее о расчёте

Как считается

Запись разбирается по выбранному основанию в целое число произвольной длины (BigInt), затем выводится в четырёх системах. Двоичная запись разбита на группы по 4 бита: каждая группа — одна шестнадцатеричная цифра. Сдвиг влево на N бит умножает число на 2N, сдвиг вправо делит нацело с округлением вниз.

Пример

255 = FF₁₆ = 377₈ = 1111 1111₂. Сдвиг влево на 3 бита даёт 2040 = 7F8₁₆, вправо — 31 = 1F₁₆. Число −5 в 8-битном дополнительном коде записывается как FB₁₆ = 1111 1011₂.

Что не учтено

  • Только целые числа. Дробную часть и числа с плавающей точкой калькулятор не разбирает.
  • Ввод — до 512 бит (около 154 десятичных цифр), сдвиг — до 256 бит.
  • Результат сдвига не обрезается по разрядности: в языке C сдвиг переменной шириной 8 или 32 бита теряет старшие биты, а здесь они сохраняются.
  • Сдвиг вправо отрицательных чисел арифметический; в стандарте C его поведение определяется реализацией.

Источники

  • Д. Кнут, «Искусство программирования», т. 2 «Получисленные алгоритмы», разд. 4.1 «Позиционные системы счисления», 3-е изд., Addison-Wesley, 1997 год.
  • ISO/IEC 9899:2024 (язык C, C23), п. 6.5.8 «Операции побитового сдвига»: сдвиг влево на N бит умножает на 2^N, а сдвиг вправо отрицательного значения определяется реализацией; здесь выбран арифметический сдвиг.

Обновлено 08.11.2026.