跳過到頁腳內容
Iron Academy Logo
學習 C#
學習 C#

其他分類

理解 C# 中的二進制 OR 運算

Tim Corey
5分54秒

C#中的二進位操作對於處理按位操作至關重要,尤其是在使用標誌、權限和低階資料處理時。 其中一個基本的二進位運算符是OR(|)運算符。 在他的影片C#中的二進位:十分鐘內了解二進位的OR運算符中,Tim Corey 分析了 OR 運算符在 C# 中的工作原理及其實際應用。 讓我們一步步地了解他的解釋。

二進位 OR 運算符簡介

Tim 開始影片時繼續他關於理解 C# 中的二進位操作的系列。 這是系列中的第五課,專注於 OR 運算符。 他設置了一個基本場景,其中有兩個整數值,Val1Val2,以二進位格式表示。 這些值會在控制台上列印以提供清晰的視覺解析度,使其在二進位中顯示的外觀。

理解按位 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 = 0001
  • WRITE_PERMISSION = 0010
  • EXECUTE_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# 中工作及其可有效應用的情境。

Hero Worlddot related to 理解 C# 中的二進制 OR 運算
Hero Affiliate related to 理解 C# 中的二進制 OR 運算

通過分享您所愛的東西賺得更多

您是否在為使用.NET、C#、Java、Python或Node.js的開發者創建內容?將您的專業知識轉化為額外收入!

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我