[TIL/JavaScript]ビット演算子


[JavaScript]ビット演算子
  • ビット演算子は、与えられた数をバイナリ数に変換し、ビット単位で論理演算を実行する.
  • &(AND論理演算子)
    比較
  • のビット数がいずれも1であれば、1を返す.
  • const b1 = 2 & 3;
    console.log(b1); //2
    //2 0010
    //3 0011
    //  0010 = 2
    |(OR論理演算子)
  • で比較したビットのうち、1つでも1を返します.
  • const b2 = 2 | 3;
    console.log(b2); //3
    //2 0010
    //3 0011
    //  0011 = 3
    ^(排他論理演算子)
  • で比較された2つのビットは、0を返し、1を返します.
  • const b3 = 5 ^ 3;
    console.log(b3); //6
    //5 0101
    //3 0011
    //  0110 = 6
    ~(否定論理演算子)
  • 被演算子は1つしかなく、ビットの値を反転します.
  • 1の「一元」補完方式は,リズムを反転させることによって負の値を表現する.
  • const b4 = ~ 4;
    console.log(b4); //-4
    //0000 0100 4
    //1111 1011 -4
    <<(左切替演算子)
  • は、指定された数でビット全体を左に移動する.
  • は何格子を移動し、2の平方を乗じた.
  • const b5 = 4 << 2;
    console.log(b5); //16
    //4를 2비트 왼쪽으로 이동한다.
    //0000 0100 4
    //0000 1000 8(1비트 이동)
    //0001 0000 16(2비트 이동)
    //4 * 2 * 2
    >>(右切り替え演算子)
  • ビット数全体を指定された数だけ右に移動します.
  • 右側の位では消えてしまうので、規則性はありません.
  • const b6 = 4 >> 2;
    console.log(b6); //1
    //4를 2비트 오른쪽으로 이동한다.
    //0000 0100 4
    // 000 0010 2(1비트 이동)
    //  00 0001 1(2비트 이동)
    >>>>(符号なし右切り替え演算子)
  • 32ビット数のすべてのビットを右に移動し、空席はすべて0になります.
  • 正数では、動作は符号右側切替と同じであるが、負数の場合は異なる.→空席を0に埋め、負数のバイナリ表現を正数とする.
  • const b7 = 5 >>> 2;          
    const b8 = -5 >>> 2;                    
    
    console.log(b7); //1
    //  00000000000000000000000000000101 5
    //  00000000000000000000000000000001 1(2비트 이동)
    
    console.log(b8); //1073741822
    // -00000000000000000000000000000101(=11111111111111111111111111111010) -5
    //  00111111111111111111111111111110 1073741822(2비트 이동)
    P.S.
    ビット演算子がどこで使えるか探しましたが、見つかりませんでした.しかし、重要なのは私が0と1を直接コントロールできることです.😇 今はいらないとしても、一つ一つ知っていれば、いつか原因を意識する日が来るかもしれません.🤔
    コメントドキュメント
  • JavaScriptビット演算子by Jamのワークスペース
  • にしんすうと負数表現
  • Unsigned right shift (>>>) by MDN Web Docs
  • Bitwise XOR (^) by MDN Web Docs