C#のバイナリOR演算子を理解する
C#のバイナリ操作は、ビット単位の操作、特にフラグ、パーミッション、低レベルのデータ処理を扱う際に不可欠です。 基本的な二項演算子のひとつに、OR (`) があります。|演算子 彼のビデオ Binary in C#:10分以内でわかる二項論理和演算子では、ティム・コーリーがC#で二項論理和演算子がどのように機能するのか、そしてその実用的な応用例を説明しています。 それでは、彼の説明を順を追って見ていきましょう。
バイナリ OR 演算子の紹介
ティムは、C#のバイナリ演算を理解するシリーズの続きからビデオを始めます。 シリーズ5回目となるこのレッスンでは、OR演算子に焦点を当てます。 彼は、2つの整数値、Val2を、2進数形式で表す基本的なシナリオを設定します。 これらの値は、バイナリでどのように表示されるかを明確に視覚的に表現するために、コンソールに表示されます。
ビット単位の OR を理解する
この時点で、ティムはバイナリ比較でOR演算子が何をするのかを説明します。 彼は、OR演算子が対応する位置にある2つのバイナリ値の各ビットを比較することを明確にしています。 ビットのいずれかが1になります。 両方のビットが0になります。
これを実証するために、彼は2つの値を比較する例を説明します:
Val1 = 1101(2進数表現)Val2 = 0010(2進数表現)
ティムは、各ビット位置で、少なくとも1つの値が1になることを強調します。 そうでなければ、それは0のままです。
Implementing OR in C
ティムは、OR演算を実行する実際のコードを書くことに移る。 彼は、OR 演算の結果をシングルパイプを使って新しい変数に代入する (`)|演算子
// Define two binary values as integers
int Val1 = 0b1101; // Binary representation: 1101
int Val2 = 0b0010; // Binary representation: 0010
// Perform the bitwise OR operation
int result = Val1 | Val2;
// Print the result to the console
Console.WriteLine(Convert.ToString(result, toBase: 2)); // Output: 1111 in binary// Define two binary values as integers
int Val1 = 0b1101; // Binary representation: 1101
int Val2 = 0b0010; // Binary representation: 0010
// Perform the bitwise OR operation
int result = Val1 | Val2;
// Print the result to the console
Console.WriteLine(Convert.ToString(result, toBase: 2)); // Output: 1111 in binary説明
- 2進数値はC#での直接的な2進数入力を容易にする
0bプレフィックスを使用して定義されます。 - ビット単位OR演算の結果は
result変数に格納されます。 Convert.ToString(result, toBase: 2)は整数結果をその2進数形式を表す文字列に変換し、それを表示できるようにします。
ティムはここで重要な区別をします: ifステートメント内の論理式では、|| for logical OR, whereas in bitwise operations, we use a single |個々のビットで動作するように。
アウトプットの理解
OR 演算を実行した後、Tim は結果をコンソールに表示します。 出力は、ORがビットレベルでどのように機能するかを示します:
1101|0010 = 1111
結果の各ビットは次のルールに従います: 1です。 これは、ORがどのように2進数を結合するかを明確に視覚化したものです。
入力値の修正
コンセプトを強化するために、ティムはVal2を修正し、OR演算子が異なる入力にどのように反応するかを確認します。 彼は1010に変更し、操作を再度実行します。 その結果、ORロジックとの一貫性が保たれます:
1101|1010 = 1111
ティムは、与えられた位置で少なくとも1つの数値が1になることを指摘します。
論理 OR 対 ビット単位の OR
ティムは、論理和()と論理積()の違いについて簡単に説明します。||) and bitwise OR (|`)。 論理 OR は、次のようなブール条件に使用されます:
// Example of logical OR in a conditional statement
if (condition1 || condition2)
{
// Execute if either condition1 or condition2 is true
}// Example of logical OR in a conditional statement
if (condition1 || condition2)
{
// Execute if either condition1 or condition2 is true
}一方、Bitwise ORは、このレッスンで見たように、ビットレベルでの2進演算に使用されます。
ビット毎論理和の実用的なアプリケーション
Timは最後に、ビット単位のORが役立つ実用的なシナリオについて説明します。 一般的な使用例の1つに、フラグベースの設定があります。 例えば、異なる許可フラグがバイナリ値として格納されている場合、ORを使用してそれらを効率的に組み合わせることができます。
例えば、フラグベースのシステムでは
READ_PERMISSION = 0001WRITE_PERMISSION = 0010EXECUTE_PERMISSION = 0100
ユーザーが読み取りと書き込みの両方のパーミッションを必要とする場合、ORを使用してそれらを組み合わせることができます:
// Define permission flags as constants
const int READ_PERMISSION = 0b0001;
const int WRITE_PERMISSION = 0b0010;
// Combine read and write permissions using bitwise OR
int userPermissions = READ_PERMISSION | WRITE_PERMISSION; // Result: 0011
// Print the user permissions in binary
Console.WriteLine(Convert.ToString(userPermissions, toBase: 2)); // Output: 0011// Define permission flags as constants
const int READ_PERMISSION = 0b0001;
const int WRITE_PERMISSION = 0b0010;
// Combine read and write permissions using bitwise OR
int userPermissions = READ_PERMISSION | WRITE_PERMISSION; // Result: 0011
// Print the user permissions in binary
Console.WriteLine(Convert.ToString(userPermissions, toBase: 2)); // Output: 0011Timは、既存の値に影響を与えることなく、このようなフラグの組み合わせを処理する際に、ORが特に有用であることを強調しています。
最終的な考え
動画が終わると、ティムは重要なポイントをまとめます:
- ビット毎論理和 (`|) は、2 つの数値の対応するビットを比較します。
- どちらのビットが
1です。 - この演算子は、フラグと設定を効率的に組み合わせるためによく使用されます。
- 論理ORとは異なります。||これはブール式に使用されます。
Timの説明と例に従うことで、C#で二項OR演算子がどのように機能し、どこで効果的に適用できるかをしっかりと理解することができます。



