ビットOR演算の基本
ビットOR(|)演算子の仕組みを学びます。ORは対応するビットの少なくとも一方が1の場合に1を返します。フラグの設定やビットマスクの結合に使用。
OR Operations
詳細な説明
ビットOR(|)を理解する
OR演算子は対応するビットの各ペアを比較します。結果ビットは入力ビットの少なくとも一方が1の場合に1になります。両方が0の場合のみ0です。
真理値表
A | B | A | B
--|---|------
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 1
計算例
42 | 15を計算してみましょう:
42 = 00101010
| 15 = 00001111
──────────────────
47 = 00101111
どちらかのオペランドに1があるビット位置はすべて結果で1になります。
ORでビットを設定する
ORの主な用途は、他のビットに影響を与えずに特定のビットを1に設定することです。1とORするとビットは強制的に1になり、0とORすると元の値が保持されます。これはANDのマスキング動作の補完です。
フラグの結合
フラグベースのシステムでは、各フラグが一意のビット位置を占めます。複数のフラグをORで結合します:
const READ = 0b001; // 1
const WRITE = 0b010; // 2
const EXECUTE = 0b100; // 4
const permissions = READ | WRITE; // 0b011 = 3
このパターンはオペレーティングシステム、グラフィックスAPI(OpenGL、Vulkan)、設定ライブラリで広く使用されています。
冪等性
ORはビット設定において冪等です:ビットがすでに1の場合、1とORしても結果は1のままです。つまり、フラグがすでに設定されているかチェックせずに安全に「追加」できます。
ユースケース
ゲーム開発者はORを使用して機能フラグを結合し、複合的な設定値を構築します。例えば、レンダリングパイプラインがDEPTH_TEST | ALPHA_BLEND | CULL_FACEを単一の整数に結合し、有効なすべてのレンダーステートを表現できます。複数の状態変更呼び出しの代わりに1回の呼び出しでGPUドライバーに渡せます。