CCalculate.Studio

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

Побитовые операции работают напрямую с отдельными двоичными разрядами (битами) числа, а не с его десятичным значением целиком. Этот калькулятор выполняет шесть стандартных побитовых операций — AND, OR, XOR, NOT, сдвиг влево и сдвиг вправо — над неотрицательными 32-битными целыми числами и показывает двоичное представление операндов и результата.

Последняя проверка: 2026-07-07
Add as preferred on Google

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

Каждая логическая побитовая операция подчиняется фиксированной таблице истинности, применяемой независимо к каждой паре соответствующих разрядов.

Бит AБит BANDORXOR
00000
01011
10011
11110
  • Калькулятор ограничивает ввод диапазоном знакового 32-битного целого (от 0 до 2 147 483 647), потому что побитовые операторы JavaScript внутренне приводят числа к 32-битному представлению перед выполнением операции — так предписывает спецификация ECMAScript.
  • NOT (~A) всегда даёт результат, который при трактовке как знаковое 32-битное целое равен −(A + 1); калькулятор показывает беззнаковый 32-битный эквивалент (например, ~12 отображается как 4 294 967 283, а не −13), чтобы двоичное представление читалось однозначно.
  • Величина сдвига (B) больше 31 ограничивается калькулятором до 31, поскольку сдвиг 32-битного значения на 32 и более позиций в JavaScript происходит циклически (используются только младшие 5 битов величины сдвига), а не даёт 0, как можно было бы интуитивно ожидать.

Что такое побитовые операции?

Побитовая операция обрабатывает число на уровне отдельных двоичных разрядов (битов): она сравнивает или сдвигает нули и единицы его представления по основанию 2, а не выполняет обычную десятичную арифметику. Любое целое число записывается в двоичном виде как последовательность битов, каждый из которых соответствует степени двойки, — например, 12 в двоичном виде это 1100, то есть 1×8 + 1×4 + 0×2 + 0×1.

Логические побитовые операции — AND, OR, XOR (исключающее ИЛИ) и NOT — сравнивают соответствующие разряды двух чисел (или инвертируют биты одного числа) по правилам булевой логики, применяемым независимо к каждой позиции. Операции сдвига — влево и вправо — перемещают все биты числа на заданное количество позиций, что математически равнозначно умножению или делению на степень двойки.

Побитовые операции лежат в основе информатики и низкоуровневого программирования: с их помощью устанавливают, сбрасывают и проверяют отдельные флаги в наборе настроек (битовые флаги), быстро умножают и делят на степени двойки, реализуют криптографические алгоритмы, работают с графикой и цветом (объединяя каналы red/green/blue) и компактно кодируют данные.

Как пользоваться этим побитовым калькулятором

  1. Введите первое число (A) как неотрицательное целое (от 0 до 2 147 483 647 — диапазон знакового 32-битного целого).
  2. Введите второе число (B). Для AND, OR и XOR это второй операнд, сравниваемый с A поразрядно. Для операций сдвига это количество позиций сдвига (эффективны значения 0–31; большие значения ограничиваются до 31). Для NOT значение B не используется, так как эта операция работает только с A.
  3. Выберите операцию: AND, OR, XOR, NOT, сдвиг влево или сдвиг вправо.
  4. Прочитайте десятичный результат, а также двоичное представление A, B (или величины сдвига) и результата.

Как работает каждая побитовая операция

AND: бит равен 1, только если оба соответствующих бита равны 1
OR: бит равен 1, если хотя бы один соответствующий бит равен 1
XOR: бит равен 1, если ровно один соответствующий бит равен 1
Сдвиг влево: A << B = A × 2^B; Сдвиг вправо: A >> B = ⌊A ÷ 2^B⌋
Пример: 12 AND 10 = 8; 12 OR 10 = 14; 12 XOR 10 = 6; 12 << 2 = 48; 12 >> 2 = 3

AND сравнивает каждую пару разрядов и возвращает 1 только там, где оба бита равны 1, иначе 0. Пример: 12 (1100) AND 10 (1010) = 8 (1000), поскольку только в разряде со значением 8 единица присутствует в обоих числах.

OR сравнивает каждую пару разрядов и возвращает 1 там, где хотя бы один из двух битов равен 1. Пример: 12 (1100) OR 10 (1010) = 14 (1110). XOR (исключающее ИЛИ) возвращает 1 там, где ровно один из двух битов равен 1 (но не оба). Пример: 12 (1100) XOR 10 (1010) = 6 (0110).

NOT инвертирует каждый бит одного числа (0 становится 1, а 1 становится 0). Так как калькулятор работает с 32-битными значениями, NOT 12 переворачивает все 32 бита и даёт 4 294 967 283 при трактовке как беззнаковое 32-битное целое (это же представление в дополнительном коде соответствует −13 при трактовке как знаковое целое).

Сдвиг влево (A << B) перемещает все биты A на B позиций влево, заполняя освободившиеся младшие разряды нулями, — это равнозначно умножению A на 2^B. Пример: 12 << 2 = 48 (то же, что 12 × 2² = 12 × 4 = 48). Сдвиг вправо (A >> B) перемещает все биты A на B позиций вправо, отбрасывая младшие разряды, — это равнозначно целочисленному делению A на 2^B с округлением вниз. Пример: 12 >> 2 = 3 (то же, что ⌊12 ÷ 4⌋ = 3).

Типичные ошибки

  • Путать побитовые AND/OR с логическими (булевыми) AND/OR: побитовые операторы действуют независимо на каждый бит числа, а логические трактуют значение целиком как одно условие «истина/ложь»; результаты совпадают лишь в частном случае значений 0 и 1.
  • Ожидать, что сдвиг влево на большую величину всегда даёт пропорционально большее число: при достаточно сильном сдвиге значащие биты выходят за границу 32 разрядов и отбрасываются (переполнение).
  • Неверно читать результат NOT: поскольку операция переворачивает все 32 бита, беззнаковый десятичный результат ~A выглядит намного больше самого A, хотя в знаковой трактовке (дополнительный код) он представляет небольшое отрицательное число −(A+1).
  • Считать сдвиг вправо всегда эквивалентным обычному делению: для неотрицательного целого сдвиг вправо в точности совпадает с целочисленным делением с округлением вниз на степень двойки, но для отрицательных чисел поведение зависит от того, используется арифметический или логический сдвиг.

Часто задаваемые вопросы

Чем побитовое AND отличается от логического AND?

Побитовое AND (&) сравнивает два числа поразрядно и возвращает новое число, в котором каждый бит равен 1 только тогда, когда оба соответствующих входных бита равны 1: например, 12 & 10 = 8. Логическое AND (&&) трактует каждое значение целиком как одно условие «истина/ложь» и возвращает один из исходных операндов или булево значение, оценивая истинность, а не комбинируя отдельные биты. Эти операторы решают разные задачи и обычно дают совершенно разные результаты.

Как работает XOR?

XOR (исключающее ИЛИ) сравнивает два числа поразрядно и возвращает 1 в тех позициях, где ровно один из двух соответствующих битов равен 1 (не оба и не ни одного). Для 12 (1100) XOR 10 (1010) поразрядное сравнение даёт 0110, то есть 6 в десятичной системе. XOR часто применяют для переключения битов, выявления различий между двумя значениями, а также в простых контрольных суммах и расчётах чётности.

Что делает сдвиг влево?

Сдвиг влево (A << B) перемещает каждый бит двоичного представления A на B позиций влево, заполняя освободившиеся младшие разряды нулями. Математически это равнозначно умножению A на 2 в степени B. Например, 12 << 2 = 48 — тот же результат, что и 12 × 2² = 12 × 4 = 48.

Что делает побитовое NOT?

Побитовое NOT (~A) инвертирует каждый бит A: каждый 0 становится 1, а каждая 1 становится 0. Применённое к 32-битному представлению числа 12 (00000000000000000000000000001100), NOT даёт значение со всеми перевёрнутыми битами, которое как беззнаковое 32-битное число отображается как 4 294 967 283, а как знаковое целое представляет −13 в дополнительном коде (по тождеству ~A = −(A+1)).

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

Для неотрицательных целых сдвиг вправо (A >> B) даёт в точности тот же результат, что и целочисленное деление с округлением вниз на 2^B: A >> B = ⌊A ÷ 2^B⌋. Например, 12 >> 2 = 3, что совпадает с ⌊12 ÷ 4⌋ = 3. Для отрицательных чисел результаты могут расходиться: там способ обработки знакового бита зависит от типа сдвига (арифметический или логический) — деталь, важная в низкоуровневом программировании.

Почему здесь побитовые операции ограничены 32-битными целыми?

Встроенные побитовые операторы JavaScript (&, |, ^, ~, <<, >>) перед выполнением операции внутренне приводят операнды к 32-битным целым — так требует спецификация языка ECMAScript. Калькулятор воспроизводит это стандартное поведение, поэтому ввод ограничен диапазоном, представимым в 32 битах (от 0 до 2 147 483 647 для принимаемых здесь неотрицательных значений).

Источники

  1. Warren HS Jr. Hacker's Delight. 2nd ed. Addison-Wesley, 2012. (Standard reference for bitwise algorithms and two's-complement arithmetic.)
  2. ECMA International. ECMA-262: ECMAScript Language Specification, §6.1.6.1 (Bitwise operators, ToInt32/ToUint32). ecma-international.org.
  3. Patterson DA, Hennessy JL. Computer Organization and Design: The Hardware/Software Interface. 5th ed. Morgan Kaufmann, 2013. (Binary representation and bitwise logic.)

Теория чисел · Все калькуляторы

Похожие калькуляторы