ビット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ドライバーに渡せます。

試してみる — Bitwise Calculator

フルツールを開く