HTML: Markup language
CSS: Styling language
JavaScript: Scripting language
Web APIs: Programming interfaces
All web technology
Learn web development
Discover our tools
Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
View in English Always switch to English
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
ビット排他的論理和 (^) 演算子は、両方のオペランドの対応するビットが 1 であるビットの位置に 1 を、それ以外のビットの位置に 0 を設定した二進数表現を持つ数値または長整数を返します。
^
1
0
const a = 5; // 00000000000000000000000000000101 const b = 3; // 00000000000000000000000000000011 console.log(a ^ b); // 00000000000000000000000000000110 // 予想される結果: 6
x ^ y
^ 演算子は、数値と長整数の 2 種類のオペランドに対してオーバーロードされています。数値の場合、この演算子は 32 ビット整数をを返します。長整数の場合、演算子は長整数をを返します。最初のオペランドを数値型に変換し、その型を検査します。オペランドが長整数になった場合、長整数の XOR を実行します。そうでない場合、オペランドを 32 ビット整数に変換し、数値のビット単位の XOR を実行します。もし一方のオペランドが長整数になり、もう一方が数値になる場合は、 TypeError が発生します。
TypeError
この演算子は、オペランドのビット表現を 2 の補数で操作します。最初のオペランドのそれぞれのビットは、対応する 2 つ目のオペランドのビットと、 1 番目のビット同士、 2 番目のビット同士というようにペアになります。演算はそれぞれのビットのペアに適用され、結果はビット単位で構築されます。
XOR 演算の真理値表は次のようになります。
9 (10 進数) = 00000000000000000000000000001001 (2 進数) 14 (10 進数) = 00000000000000000000000000001110 (2 進数) -------------------------------- 14 ^ 9 (10 進数) = 00000000000000000000000000000111 (2 進数) = 7 (10 進数)
オペランドは 32 ビットの整数値に変換され、ビット (ゼロまたは 1) の並びによって表現されます。32 ビットを超える数値は最上位のビットが破棄されます。例えば、次の 32 ビットを超える整数は 32 ビット整数に変換されます。
変換前: 11100110111110100000000000000110000000000001 変換後: 10100000000000000110000000000001
警告: 数値を整数に切り詰めるために ^ 0 を使用する人を目にするかもしれません。任意の数値 x に 0 でビット単位の XOR を行うと、 x を 32 ビット整数に変換した値が得られますが、 -2147483648 から 2147483647 の範囲外にある値については、先頭のビットが除去されることになります。代わりに Math.trunc() を使用するよう使用してください。
^ 0
x
Math.trunc()
長整数の場合、切り捨ては発生しません。概念的には、正の値の長整数は先頭に無限の 0 ビットがあり、負の値の長整数は先頭に無限の 1 ビットがあるものと理解してください。
// 9 (00000000000000000000000000001001) // 14 (00000000000000000000000000001110) 14 ^ 9; // 7 (00000000000000000000000000000111) 14n ^ 9n; // 7n
Enable JavaScript to view this browser compatibility table.
^=