JavaScript のビット演算: 単一パイプ ("|") の謎を解明する 演算子
単一パイプ ("|") JavaScript の演算子は、バイナリ表現内の個々のビットを操作するために不可欠なビットごとの OR 演算を実行します。ブール値に対して演算を実行する || などの論理演算子とは異なり、ビット単位の演算子は整数のバイナリ表現を直接処理します。
具体的には、ビット単位の or 演算子「|」です。 2 つの整数オペランドの論理和を計算します。これは、オペランドのバイナリ表現の各ビット位置について、少なくとも 1 つのビットが 1 であれば、結果のビットも 1 になることを意味します。
a | b = (a_n OR b_n) FOR ALL n
ただし、ビット単位の演算は整数に対してのみ意味をなすため、JavaScript では操作を実行する前に、整数以外の値を整数に切り捨てます。提供されている例に示すように、これにより予期しない結果が生じる可能性があります。
console.log(0.5 | 0); // 0 console.log(-1 | 0); // -1 console.log(1 | 0); // 1
最初の例では、0.5 は 0 でビット単位の OR 演算を実行する前に 0 に切り捨てられます。両方のオペランドが 0 であるため、結果は
2 番目の例では、0 (バイナリ表現: 00000000000000000000000000000000) とのビット単位の OR 演算を実行すると、-1 (バイナリ表現: 11111111111111111111111111111111) は変化せず、結果は -1 になります。
最後の例では、1 (バイナリ表現: 00000000000000000000000000000001) は再び変更されず、結果は 1 になります。
したがって、整数の場合、x | x | 0 は単に x を返します。
以上がビットごとの OR 演算子 \'|\' は JavaScript でどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。