Что такое калькулятор побитового ИЛИ?
Этот калькулятор вычисляет побитовое ИЛИ двух целых чисел — операцию, которая в большинстве языков программирования записывается как a | b. ИЛИ сравнивает два числа бит за битом: в результате каждый бит равен 1, если хотя бы один (или оба) из соответствующих исходных битов равен 1, и равен 0 только тогда, когда оба бита равны 0.
Как пользоваться
Введите первое целое число (A) и второе целое число (B), а затем посмотрите результат в десятичном виде. Поддерживаются как положительные, так и отрицательные целые числа. На вход и на выход калькулятор работает в десятичной системе (по основанию 10), но внутри каждое значение обрабатывается в его двоичном представлении.
Разбор формулы
Операция выполняется для каждого бита по таблице истинности ИЛИ:
$$\text{Result} = \text{A} \mathbin{|} \text{B}$$\(0|0=0\), \(0|1=1\), \(1|0=1\), \(1|1=1\). Например, возьмём A = 12 и B = 10. В двоичном виде 12 = 1100, а 10 = 1010. Выровняв числа и применив ИЛИ к каждому столбцу, получаем 1110, что в десятичной системе равно 14. То есть\(12 \mathbin{|} 10 = 14\).
Разбор примера
Допустим, нужно вычислить \(5 \mathbin{|} 3\). В двоичном виде 5 = 101, а 3 = 011. Применяем ИЛИ к каждому биту: \(1|0=1\), \(0|1=1\), \(1|1=1\) — получаем 111 = 7. Калькулятор вернёт 7.
Частые вопросы
Побитовое ИЛИ — это то же самое, что сложение? Нет. В ИЛИ нет переноса разряда. \(1|1\) остаётся 1, тогда как \(1+1\) в двоичной системе даёт перенос и получается 10. Совпадают они только тогда, когда у операндов нет общих установленных битов.
А как насчёт отрицательных чисел? Отрицательные целые числа представляются в дополнительном коде (two's complement), поэтому ИЛИ для них работает по тем же правилам, в том числе и для знаковых битов.
Зачем нужна операция ИЛИ? ИЛИ часто используют, чтобы установить (включить) определённые биты или объединить значения флагов — например, при слиянии масок прав доступа.
Справочник распространённых значений побитового ИЛИ
В таблице ниже приведены значения \(A \mathbin{|} B\) для каждой пары малых операндов от 0 до 8. Прочитайте строку для A и столбец для B; ячейка содержит десятичный результат.
| | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 1 | 1 | 1 | 3 | 3 | 5 | 5 | 7 | 7 | 9 |
| 2 | 2 | 3 | 2 | 3 | 6 | 7 | 6 | 7 | 10 |
| 3 | 3 | 3 | 3 | 3 | 7 | 7 | 7 | 7 | 11 |
| 4 | 4 | 5 | 6 | 7 | 4 | 5 | 6 | 7 | 12 |
| 5 | 5 | 5 | 7 | 7 | 5 | 5 | 7 | 7 | 13 |
| 6 | 6 | 7 | 6 | 7 | 6 | 7 | 6 | 7 | 14 |
| 7 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 15 |
| 8 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 8 |
Диагональ (где A = B) всегда возвращает сам операнд, так как x | x = x.
Побитовое ИЛИ — это стандартный способ объединения флагов прав доступа. Распространённые биты прав доступа в стиле Unix: чтение = 4 (100), запись = 2 (010), исполнение = 1 (001):
| Комбинация | Выражение | Десятичное | Двоичное |
|---|---|---|---|
| Чтение + Запись | 4 | 2 | 6 | 110 |
| Чтение + Исполнение | 4 | 1 | 5 | 101 |
| Запись + Исполнение | 2 | 1 | 3 | 011 |
| Чтение + Запись + Исполнение (rwx) | 4 | 2 | 1 | 7 | 111 |
| Два байта объединены | 240 | 15 | 255 | 11111111 |
Ключевые термины
- Бит
-
Наименьшая единица цифровых данных, содержащая одно двоичное значение: либо
0, либо1. Группа из 8 битов образует байт. - Установленный / неустановленный бит
-
Установленный бит имеет значение
1; неустановленный (или очищенный) бит имеет значение0. Побитовое ИЛИ обычно используется для установки определённых битов без нарушения других. - Битовая маска
- Целое число, чей битовый паттерн выбран для выделения, установки или очистки определённых битов в другом значении. ИЛИ значения с маской приводит к установке каждого бита, который установлен в маске, в результате.
- Флаг
-
Отдельный бит (часто получающий названную константу), используемый для представления параметра включено/выключено. Несколько флагов упаковываются в одно целое число и объединяются с помощью ИЛИ, например
READ | WRITE. - Дополнение до двух
-
Стандартный способ представления знаковых целых чисел компьютером. Наиболее значимый бит имеет отрицательный вес, поэтому
n-битовое число находится в диапазоне от \(-2^{n-1}\) до \(2^{n-1}-1\). Например, \(-1\) хранится как все единицы. - Наиболее / наименее значимый бит (MSB / LSB)
- MSB — это самый левый бит, несущий наибольшее значение разряда (и знак в дополнении до двух); LSB — это самый правый бит со значением разряда \(2^0 = 1\).
- Десятичная против двоичной системы
- Десятичная (по основанию 10) — это повседневная система счисления, использующая цифры 0–9. Двоичная (по основанию 2) использует только 0 и 1, где каждая позиция соответствует степени двойки. Побитовые операции действуют на двоичное представление, тогда как этот калькулятор отображает результат в десятичной системе.