UnitConv
Побитовые операции

Калькулятор побитовых операций

AND, OR, XOR, NOT и битовые сдвиги над 32-битными целыми, с побитовой визуализацией

Операнды

Операнд A
Операнд B

Операция

Результат

12 & 10
Десятичное8
Без знака8
Шестн.0x00000008
Двоичное00000000000000000000000000001000

32-битное представление результата

0
31
0
30
0
29
0
28
0
27
0
26
0
25
0
24
0
23
0
22
0
21
0
20
0
19
0
18
0
17
0
16
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
1
3
0
2
0
1
0
0
MSB (bit 31)LSB (bit 0)

Значения трактуются как 32-битные целые числа. Десятичное со знаком интерпретирует старший бит как знак (дополнительный код); десятичное без знака читает все 32 бита как положительную величину. Сдвиг вправо логический (слева заполняется нулями).

Об этом инструменте

Калькулятор побитовых операций позволяет разработчикам и студентам информатики вычислять AND, OR, XOR, NOT и сдвиги влево и вправо над двумя целыми числами. Вводите каждый операнд в двоичной, десятичной или шестнадцатеричной системе, и результат отображается сразу во всех трёх системах вместе с живой 32-битной картой, показывающей, какие именно биты меняются. Он создан для отладки флагов и битовых масок, работы с правами доступа, упаковки данных и изучения того, как компьютеры обрабатывают биты на самом низком уровне.

Как пользоваться

  1. 1 Введите операнд A и выберите его систему счисления (двоичную, десятичную или шестнадцатеричную).
  2. 2 Выберите операцию: AND, OR, XOR, сдвиг влево/вправо или унарную NOT.
  3. 3 Для операций с двумя операндами введите операнд B; для сдвига — на сколько битов сдвигать.
  4. 4 Прочитайте результат в десятичном виде со знаком и без знака, в шестнадцатеричном и двоичном, и рассмотрите выделенные биты.

Как это работает

Побитовые операции работают над каждым из 32 битов независимо. AND устанавливает бит результата в 1 только когда оба входных бита равны 1, поэтому используется для маскирования (сохранения) выбранных битов. OR устанавливает бит в 1, когда хотя бы один входной бит равен 1, поэтому используется для включения флагов. XOR устанавливает бит в 1 только когда входные биты различаются, что идеально для переключения битов и простых контрольных сумм. NOT унарна: она инвертирует каждый бит, превращая 0 в 1 и 1 в 0. Сдвиг влево (<<) перемещает все биты к старшему концу и заполняет нулями, умножая на два на каждой позиции; логический сдвиг вправо (>>) перемещает их в обратную сторону и тоже заполняет нулями. Поскольку отрицательные числа хранятся в дополнительном коде, одни и те же 32 бита можно читать как значение со знаком (старший бит — знак) или без знака, поэтому этот инструмент показывает оба. Например, 12 AND 10 = 8, 12 OR 10 = 14, 12 XOR 10 = 6, 1 << 4 = 16, а NOT 0 даёт все единицы, то есть -1 со знаком или 4294967295 без знака.

Частые вопросы

В чём разница между AND, OR и XOR?

AND сохраняет бит только когда он установлен в обоих операндах, поэтому используется для очистки или проверки битов маской. OR устанавливает бит, когда он есть хотя бы в одном операнде, поэтому используется для включения битов. XOR устанавливает бит только когда он есть ровно в одном операнде, что переключает биты и выявляет различия.

Почему NOT 0 показывает -1 и одновременно 4294967295?

NOT инвертирует все 32 бита, поэтому 0 становится тридцатью двумя единицами. Прочитанный как целое со знаком в дополнительном коде, этот шаблон равен -1; прочитанный как 32-битное целое без знака — 4294967295. Оба описывают одни и те же биты.

Что на самом деле делает сдвиг влево или вправо?

Сдвиг влево на n перемещает каждый бит на n позиций к старшему концу и заполняет нулями, умножая на 2 в степени n. Логический сдвиг вправо на n перемещает их в обратную сторону и заполняет нулями, деля неотрицательные значения на 2 в степени n.

Почему всё ограничено 32 битами?

Побитовые операторы JavaScript и большинство целочисленных регистров процессоров работают с 32-битными словами, и этот инструмент следует этому. Величина сдвига берётся по модулю 32, а значения циклически переносятся в пределах 32-битного диапазона, точно как в C, Java или JavaScript.

Связанные инструменты и применения

Чтобы преобразовать одно значение между двоичной, восьмеричной, десятичной и шестнадцатеричной системами, используйте конвертер систем счисления. Для кодов символов смотрите конвертер ASCII, а для цветовых масок — конвертер цветовых кодов.