Spec-Zone.ru › JavaScript

Побитовое ИЛИ (|)

Базовая поддержка Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 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

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# prod-BitwiseORExpression

Совместимость с браузерами

Настольные компьютеры Мобильные устройства Сервер
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

См. также

  • Побитовые операторы в руководстве по JS
  • Присваивание побитового ИЛИ (|=)

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API