ビットマスク 【bit mask】
特定ビットを取り出す
あるビット列を構成する特定のビットの状態を知りたい場合、その位置を「1」に、残りを「0」にしたビットマスクを用意し、対象ビット列とビット論理積(AND)を取れば、そのビットのみが元の状態のまま残り、他のビットは「0」となる。
例えば、8ビットの値の左から3番目のビットが知りたい場合、「00100000」というビットマスクとAND演算を行えば、当該ビットが「1」の場合は「00100000」、「0」の場合は「00000000」という結果になり、当該ビットの状態のみを取り出すことができる。
特定ビットを操作する
あるビット列の特定のビットを「1」にしたい場合、その位置を「1」に設定して他を「0」に設定したビットマスクを用意して、ビット論理和(OR)を取ればよい。マスク中で「1」に設定した位置のビットは必ず「1」となり、「0」に設定した位置のビットは元の値がそのまま(0なら0、1なら1)残る。
また、特定の位置を「0」にしたい場合、その位置を「0」、他を「1」にしたビットマスクを用意して、ビット論理積(AND)を取ればよい。マスク中で「0」に設定した位置のビットは必ず「0」となり、「1」に設定した位置ののビットは元の状態のまま残る。
(2023.1.14更新)