一般的なJavaScriptビット操作(Bitwise)

1332 ワード

ビット操作


JavaScriptの数字は、IEEE-754(Institute of Electrical and Electronics Engineers)規格に従って64ビット形式で格納されます.ビット動作では、数字は符号付き32ビットフォーマットに変換される.各演算子は32ビット数を直接操作して結果を得る.変換が必要ですが、このプロセスはJavaScriptの他の数学演算やブール操作に比べてずっと速いです.
  • Bitwise ANDビットと
  • 両方のオペランドの対応ビットが1の場合、その位置で1を返します.
  • Bitwise ORビットまたは
  • 2つのオペランドの対応するビットが1であれば、そのビットに1を返す.
  • Bitwise XOR按位異または
  • 2つのオペランドの対応するビットが1つしかない場合、そのビットには1が返される.
  • Bitwise NOTビット別逆
  • 0に遭遇すると1を返し,逆も同様である.

    色が入れ替わる


    32桁の数字の2進数の下位は偶数の最低位が0、奇数の最低位が1であることを表す.この数が偶数の場合、1とビットで加算された結果は0です.この数が奇数の場合、1とビットで加算された結果は1です.この方法を用いて色の交互を実現することができ、効率は純粋な数学演算(例えば、型取り)より50%速くなる可能性がある.
        for (let i = Things.length - 1; i >= 0; i--) {
            if(i & 1) {
                className = 'oddColor';
            }else {
                className = 'evenColor';
            }
        }

    ビットマスク


    ビットマスクは、複数のブールオプションが同時に存在する場合を処理するために使用されます.単一の数値の各ビットを用いてオプションが成立するか否かを判定し、ブール値タグからなる配列に効率的に数値を変換する.マスクの各オプションの値は2のべき乗に等しい.
    const OPTION_A = 1;
    const OPTION_B = 2;
    const OPTION_C = 4;
    
    const options  = OPTION_A | OPTION_B;
    
    //   A   options 
    if(options & OPTION_A) {
        // code here
    }
    //   A   options 
    if(options & OPTION_B) {
        // code here
    }
    //   A   options 
    if(options & OPTION_C) {
        // code here
    }