Побитовое ИЛИ (|)
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Побитовое ИЛИ (|) возвращает число или BigInt, в двоичном представлении которого в каждой битовой позиции, для которой соответствующие биты одного или обоих операндов являются 1, установлен 1.
Попробуйте
const a = 5; // 00000000000000000000000000000101 const b = 3; // 00000000000000000000000000000011 console.log(a | b); // 00000000000000000000000000000111 // Expected output: 7
Синтаксис
x | y
Описание
Оператор | перегружен для двух типов операндов: число и BigInt. Для чисел оператор возвращает 32-битное целое число. Для BigInts оператор возвращает BigInt. Сначала он преобразует оба операнда в числовые значения и проверяет их типы. Он выполняет BigInt OR, если оба операнда становятся BigInts; в противном случае он преобразует оба операнда в 32-битные целые числа и выполняет побитовое ИЛИ для чисел. TypeError выбрасывается, если один операнд становится BigInt, а другой — числом.
Оператор работает с битовыми представлениями операндов в дополнительном коде. Каждый бит в первом операнде сопоставляется с соответствующим битом во втором операнде: *первый бит* к *первому биту*, *второй бит* ко *второму биту* и так далее. Оператор применяется к каждой паре битов, и результат формируется побитово.
Таблица истинности для операции ИЛИ:
| x | y | x ИЛИ y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
9 (base 10) = 00000000000000000000000000001001 (base 2)
14 (base 10) = 00000000000000000000000000001110 (base 2)
--------------------------------
14 | 9 (base 10) = 00000000000000000000000000001111 (base 2) = 15 (base 10)
Числа, содержащие более 32 бит, теряют свои старшие биты. Например, следующее целое число, содержащее более 32 бит, будет преобразовано в 32-битное целое число:
Before: 11100110111110100000000000000110000000000001 After: 10100000000000000110000000000001
Внимание: Вы можете увидеть, как люди используют | 0 для усечения чисел до целых. Побитовое ИЛИ любого числа x с 0 возвращает x, преобразованное в 32-битное целое число, что дополнительно удаляет старшие биты для чисел вне диапазона от -2147483648 до 2147483647. Вместо этого используйте Math.trunc().
Для BigInts усечения нет. Концептуально, положительные BigInts имеют бесконечное количество старших битов 0, а отрицательные BigInts — бесконечное количество старших битов 1.
Примеры
Использование побитового ИЛИ
// 9 (00000000000000000000000000001001) // 14 (00000000000000000000000000001110) 14 | 9; // 15 (00000000000000000000000000001111) 14n | 9n; // 15n
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
bitwise_or |
1 |
12 |
1 |
3 |
1 |
18 |
4 |
10.1 |
1 |
1.0 |
4.4 |
1 |
1.0.0 |
1.0 |
0.10.0 |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_OR