理解 C# 中的二進制 OR 運算
C#中的二進位操作對於處理按位操作至關重要,尤其是在使用標誌、權限和低階資料處理時。 其中一個基本的二進位運算符是OR(|)運算符。 在他的影片C#中的二進位:十分鐘內了解二進位的OR運算符中,Tim Corey 分析了 OR 運算符在 C# 中的工作原理及其實際應用。 讓我們一步步地了解他的解釋。
二進位 OR 運算符簡介
Tim 開始影片時繼續他關於理解 C# 中的二進位操作的系列。 這是系列中的第五課,專注於 OR 運算符。 他設置了一個基本場景,其中有兩個整數值,Val1 和 Val2,以二進位格式表示。 這些值會在控制台上列印以提供清晰的視覺解析度,使其在二進位中顯示的外觀。
理解按位 OR
此時,Tim 解釋了 OR 運算符在二進位比較中的作用。 他闡明 OR 運算符比較兩個二進位值相對應位置的每一位。 如果其中一位是 1,則該位置的結果為 1。 如果兩位都是 0,則結果為 0。
為了演示這一點,他循例比較了兩個值:
Val1 = 1101(二進位表示)Val2 = 0010(二進位表示)
Tim 強調在每一個位元位置上,如果至少其中一個值為 1,則結果位元為 1。 否則,則保持為 0。
Implementing OR in C
Tim 接著撰寫實際的程式碼來執行 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
解釋
- 二進位值使用
0b前綴來定義,這樣可以在 C# 中直接輸入二進位。 - 按位 OR 操作的結果儲存在
result變數中。 Convert.ToString(result, toBase: 2)把整數結果轉換為其二進位格式的字串,以供顯示。
此處Tim做了一個重要區別:在if語句中的邏輯運算中,我們使用|| for logical OR, whereas in bitwise operations, we use a single |來對單個位元進行操作。
理解輸出
運行完 OR 操作後,Tim 將結果列印在控制台上。 輸出示範了 OR 是如何在位元層面上工作的:
1101| 0010 = 1111
結果中的每一位遵循的規則是:如果1。 這提供了二進位數字合併的清晰視覺化。
修改輸入值
為了加強概念,Tim 修改了 Val2 來查看 OR 運算符如何對不同輸入做出反應。 他將 Val2 更改為 1010,然後再次運行操作。 結果仍然符合 OR 邏輯:
1101| 1010 = 1111
Tim 指出,只要其中一個數字在某个位置上有1。
邏輯 OR vs 按位 OR
Tim 簡要重申了邏輯 OR(||) and bitwise OR (|)與按位 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
}
另一方面,按位 OR 用於按位層面的二進位操作,如本課所示。
按位 OR 的實際應用
Tim 在結尾部分討論了一些按位 OR 所有用的實際場景。 一個常見的使用情境是使用基於標誌的設定。 例如,如果您將不同的權限標誌儲存為二進位值,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: 0011
Tim 強調,OR 特別有用於處理這類標誌組合而不影響現有值時。
最終想法
影片結尾時,Tim 總結了關鍵點:
- 按位 OR(
|)比較兩數中的對應位元。 - 如果任何一位為
1,結果為1。 - 此運算符通常用於高效結合標誌和設定。
- 它與用於布林表達式的邏輯 OR(
||)有所不同。
跟隨 Tim 的解釋和示例,我們可以深入理解二進位 OR 運算符如何在 C# 中工作及其可有效應用的情境。


