ビット論理積 (&)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

ビット論理積 (&) 演算子は、両方のオペランドの対応するビットのいずれもが 1 である位置のビットで 1 を返します。

試してみましょう

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

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

構文

js
x & y

解説

演算子 & は数値と長整数の 2 種類のオペランドに対してオーバーロードされています。数値の場合、演算子は 32 ビット整数を返します。長整数の場合、演算子は長整数を返します。まず、両方のオペランドを数値に変換 して、それらの型をテストします。両方のオペランドが長整数になった場合、長整数の AND を実行します。そうでない場合は、両方のオペランドを 32 ビット整数に変換し、ビット単位の AND を行います。一方のオペランドが長整数になり、もう一方が数値になると TypeError が発生します。

この演算子は、オペランドのビット表現を 2 の補数で演算します。最初のオペランドの各ビットは、2 番目のオペランドの対応するビットとペアになります。第 1 ビットと第 1 ビット、第 2 ビットと第 2 ビットといった具合です。演算子は各ビットのペアに適用され、結果はビットごとに構成されます。

AND演算の真理値表は以下の通りです。

x y x AND y
0 0 0
0 1 0
1 0 0
1 1 1
     9 (10 進数) = 00000000000000000000000000001001 (2 進数)
    14 (10 進数) = 00000000000000000000000000001110 (2 進数)
                   --------------------------------
14 & 9 (10 進数) = 00000000000000000000000000001000 (2 進数) = 8 (10 進数)

32 ビットを超える数値は、最上位ビットが破棄されます。例えば、以下の 32 ビットを超える整数は 32 ビット整数に変換されます。

Before: 11100110111110100000000000000110000000000001
After:              10100000000000000110000000000001

長整数では切り捨ては行われません。概念的には、正の長整数は先頭の 0 ビットが無限にあり、負の長整数は先頭の 1 ビットが無限にあると理解してください。

任意の数値 x-1 とのビットごとの AND 演算は、32 ビット整数に変換された x を返します。代わりに Math.trunc() を使用してください。

ビット論理積の使用

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

14 & 9;
// 8  (00000000000000000000000000001000)

14n & 9n; // 8n

仕様書

Specification
ECMAScript® 2025 Language Specification
# prod-BitwiseANDExpression

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
Bitwise AND (a & b)

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報