FE EXAM

ビットマスク(1にする)= OR + マスク

指定した桁だけを 強制的に 1 にしたいとき、その桁を 1 にしたマスクと OR を取ります。他の桁は元の値のまま。

INTERACTIVE VISUALIZATION
マスク
0→1 に変化
value
10
mask
5
value | mask
15
値(value)10
マスク(1にしたい桁を 1 にする)5
プリセット
value
mask
OR =
解説

📌
ビットマスクとは

value00001010mask00000101result00001111

ビットマスクとは、ビット列の中で操作したい桁を選ぶための「型紙(マスク)」のことです。日常で例えるなら料理レシピのマスキングのような感覚で、「ここの桁だけ手を加えたい」「他の桁は触らない」というときに使います。

ビットマスクにはセット(1 にする)クリア(0 にする)の 2 種類があり、このページでは 1 にする側を扱います。1 にしたい桁を 1 にしたマスクを作り、元の値と OR を取るだけ。上のツールで mask スライダーを動かすと、結果がリアルタイムで連動します。

🔍
OR で 1 にする仕組み

なぜ OR を使うと特定の桁だけを 1 にできるのか、OR の性質を 1 桁ずつ確認すると見えてきます。OR は「どちらか片方でも 1 なら 1」。これを当てはめると次の 2 パターンに分かれます。
マスクが 1 の桁x OR 1 = 1。元の値に関係なく必ず 1 になる
マスクが 0 の桁x OR 0 = x。元の値がそのまま残る

つまりマスクの 1 の位置が「変更する桁」、0 の位置が「保護する桁」。具体例:

value: 0000 1010 (= 10)
mask: 0000 0101 (= 5) ← 最下位と 3 ビット目を立てたい
─────────────────────────
OR => 0000 1111 (= 15) ← 4 ビット全部 1 に

プログラミング言語では value | mask と書きます。「OR でビットを立てる、AND でビットを落とす」とセットで覚えるのが定石です。

🛠
用途 — フラグ設定など

ビットマスクで 1 にする操作は、実務でもよく使われる典型パターンです。
フラグの ON(設定):1 バイトに複数の権限フラグを詰めて持つとき、新しい権限を「追加」する。例: 読み取り + 書き込み = 0b0011 に実行権限 0b0100 を OR して 0b0111
レジスタのビットを有効化:マイコンや CPU の I/O 制御レジスタで、特定のピンや機能を ON にする
カラー値の合成:32 ビット ARGB で α 値だけを最大に上書きする、特定チャネルを強制的に 255 にするなど
状態の OR 結合:複数のオプション集合を 1 つにマージするとき。「いずれかが有効ならよし」という条件を表現できる

たとえば「2 ビット目を 1 にするマスク」は、立てたいビットだけを 1 にした 2 進数(この場合 0000 0100 = 4)になります。OR(設定)と AND(クリア)をペアで理解すると整理しやすくなります。

関連コンテンツ