最終更新日:2026年7月2日
fe fe-technology algorithm
まず結論
ビットマスクとは、操作したいビットの位置を指定するためのビット列です。
基本情報技術者試験では、ビットマスクは どのビットを残すか、1にするか、反転するかを指定するもの と考えると分かりやすいです。
使う演算によって、意味が変わります。
| 操作 | 使う演算 | マスクの1の意味 |
|---|---|---|
| 特定のビットを取り出す | AND | 残す場所 |
| 特定のビットを1にする | OR | 1にする場所 |
| 特定のビットを反転する | XOR | 反転する場所 |
つまり、マスクは単体で意味が決まるのではなく、AND、OR、XORのどれと組み合わせるか で役割が決まります。
直感的な説明
ビットマスクは、紙にかぶせる 型紙 のようなものです。
見たい場所だけ穴を開けておくと、そこだけ見えます。
例えば、8ビットの下位4ビットだけを取り出したいとします。
元のビット列:1011 0110
マスク :0000 1111
このマスクは、下位4ビットだけが 1 になっています。
ANDを取ると、1 の場所だけ元の値が残ります。
1011 0110
AND 0000 1111
= 0000 0110
このように、どのビットを操作対象にするかを指定するビット列が、ビットマスクです。
定義・仕組み
ビットマスクは、ビット演算で特定のビット位置だけを操作するために使います。
代表的な使い方は、次の3つです。
| 目的 | 例 | 考え方 |
|---|---|---|
| 取り出す | 値 AND マスク |
マスクが1の場所だけ残す |
| 1にする | 値 OR マスク |
マスクが1の場所を1にする |
| 反転する | 値 XOR マスク |
マスクが1の場所を反転する |
例えば、元の値を 1010 0101、マスクを 0000 1111 とします。
ANDで取り出す
1010 0101
AND 0000 1111
= 0000 0101
下位4ビットだけが残ります。
ORで1にする
1010 0101
OR 0000 1111
= 1010 1111
下位4ビットがすべて1になります。
XORで反転する
1010 0101
XOR 0000 1111
= 1010 1010
下位4ビットだけが反転します。
このテーマは、基本情報技術者試験の「基礎理論」や「情報に関する理論」と関係する内容です。公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。
科目Aでどう出る?
科目Aでは、ビットマスクを使って、特定のビットを残す、1にする、反転する問題が出題されやすいです。
選択肢を切るときは、まず問題文の目的を読みます。
| 問題文の目的 | 判断 |
|---|---|
| 下位4ビットを残したい | 0F と AND |
| 上位4ビットを残したい | F0 と AND |
| 特定のビットを1にしたい | OR |
| 特定のビットを反転したい | XOR |
| 特定のビットを0にしたい | 0を含むマスクとAND |
例えば、0F は2進数で次のように表せます。
0F = 0000 1111
このため、0F は下位4ビットを指定するマスクとして使えます。
値 AND 0F
→ 下位4ビットを取り出す
逆に、F0 は上位4ビットを指定します。
F0 = 1111 0000
値 AND F0
→ 上位4ビットを取り出す
科目Bでどう使う?
科目Bでは、プログラムのフラグ処理を読むときに、ビットマスクの考え方が役立ちます。
例えば、ある状態を1ビットずつ管理している場合があります。
0000 0001:読取権限
0000 0010:書込権限
0000 0100:実行権限
このようなとき、特定の権限があるか確認するには AND を使います。
権限値 AND 0000 0010
結果が0でなければ、書込権限のビットが立っていると判断できます。
また、権限を追加したいときは OR を使います。
権限値 OR 0000 0010
権限を切り替えたいときは XOR を使うことがあります。
権限値 XOR 0000 0010
科目Bでは、ビット列そのものよりも、1が立っている位置が何を表すか を読むのが大切です。
よくある誤解・混同
ビットマスクでよくある誤解は、マスクの1はいつも同じ意味だと思ってしまうこと です。
| 誤解 | 正しい理解 |
|---|---|
| マスクの1は常に「残す」 | ANDでは残す、ORでは1にする、XORでは反転する |
0F は上位4ビットを指定する |
0F は下位4ビットを指定する |
F0 は下位4ビットを指定する |
F0 は上位4ビットを指定する |
| ORでも特定ビットを取り出せる | 取り出すときはANDを使う |
| XORは1にする演算 | XORは指定ビットを反転する演算 |
特に、次の対応を覚えておくと強いです。
AND:1の場所だけ残す
OR :1の場所を1にする
XOR:1の場所を反転する
同じ 0000 1111 というマスクでも、AND、OR、XORで結果が変わります。
だから、問題文では どの演算を使うか と 何をしたいか をセットで読むのが大切です。
まとめ(試験直前用)
- ビットマスクは、操作したいビット位置を指定するビット列
- ANDでは、マスクが1の場所だけ残す
- ORでは、マスクが1の場所を1にする
- XORでは、マスクが1の場所を反転する
0F = 0000 1111なので、下位4ビットを指定するF0 = 1111 0000なので、上位4ビットを指定する- マスクの意味は、組み合わせる演算で変わる