ビット否定 (~)
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.
ビット否定演算子 (~
) は、オペランドの各ビットを反転します。他のビット演算子と同様、オペランドを 32 ビット符号付き整数に変換します。
試してみましょう
構文
js
~a;
解説
オペランドは 32 ビットの整数値に変換され、ビット (ゼロまたは 1) の並びによって表現されます。32 ビットを超える数値は最上位のビットが破棄されます。例えば、次の 32 ビットを超える整数は 32 ビット整数に変換されます。
変換前: 11100110111110100000000000000110000000000001 変換後: 10100000000000000110000000000001
オペランドの各ビットが反転されて結果になります。
NOT
演算の真理値表は次のようになります。
a | NOT a |
---|---|
0 | 1 |
1 | 0 |
js
9 (10 進数) = 00000000000000000000000000001001 (2 進数)
--------------------------------
~9 (10 進数) = 11111111111111111111111111110110 (2 進数) = -10 (10 進数)
32 ビット符号付き整数のオペランドは、2 の補数によって反転されます。すなわち、最上位ビットが負の数であることを表します。
ある数 x
のビット否定 は -(x + 1)
になります。例えば、~-5
は 4
になります。
数値に 32 ビット表現を使用するため ~-1
および ~4294967295
(2^32 - 1) はいずれも 0
になることに注意してください。
例
ビット否定の使用
js
~0; // -1
~-1; // 0
~1; // -2
仕様書
Specification |
---|
ECMAScript Language Specification # sec-bitwise-not-operator |
ブラウザーの互換性
BCD tables only load in the browser