Spec-Zone.ru › JavaScript

Побитовое И (&)

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

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Оператор побитового И (&) возвращает число или BigInt, двоичное представление которого имеет 1 в каждой битовой позиции, для которой соответствующие биты обоих операндов являются 1.

Попробуйте

const a = 5; // 00000000000000000000000000000101
const b = 3; // 00000000000000000000000000000011

console.log(a & b); // 00000000000000000000000000000001
// Expected output: 1

Синтаксис

x & y

Описание

Оператор & перегружен для двух типов операндов: число и BigInt. Для чисел оператор возвращает 32-битное целое число. Для BigInt оператор возвращает BigInt. Сначала он приводит оба операнда к числовым значениям и проверяет их типы. Он выполняет BigInt AND, если оба операнда становятся BigInt; в противном случае он преобразует оба операнда в 32-битные целые числа и выполняет побитовое И для чисел. TypeError вызывается, если один операнд становится BigInt, а другой — числом.

Оператор работает с битовыми представлениями операндов в дополнительном коде. Каждый бит в первом операнде сопоставляется с соответствующим битом во втором операнде: первый бит к первому биту, второй бит ко второму биту и так далее. Оператор применяется к каждой паре битов, и результат формируется побитово.

Таблица истинности для операции И:

x y x И y
0 0 0
0 1 0
1 0 0
1 1 1
     9 (base 10) = 00000000000000000000000000001001 (base 2)
    14 (base 10) = 00000000000000000000000000001110 (base 2)
                   --------------------------------
14 & 9 (base 10) = 00000000000000000000000000001000 (base 2) = 8 (base 10)

У чисел, содержащих более 32 бит, старшие биты отбрасываются. Например, следующее целое число, содержащее более 32 бит, будет преобразовано в 32-битное целое:

Before: 11100110111110100000000000000110000000000001
After:              10100000000000000110000000000001

Предупреждение: Вы можете увидеть, как люди используют & -1 для усечения чисел до целых. Побитовое И любого числа x с -1 возвращает x, преобразованное в 32-битное целое, что дополнительно удаляет старшие биты для чисел вне диапазона от -2147483648 до 2147483647. Вместо этого используйте Math.trunc().

Для BigInt усечения нет. Концептуально, положительные BigInt можно представить как имеющие бесконечное количество ведущих 0 битов, а отрицательные BigInt — как имеющие бесконечное количество ведущих 1 битов.

Примеры

Использование побитового И

// 9  (00000000000000000000000000001001)
// 14 (00000000000000000000000000001110)

14 & 9;
// 8  (00000000000000000000000000001000)

14n & 9n; // 8n

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

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

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

Настольные Мобильные Серверные
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_and
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_AND

Spec-Zone.ru

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