首頁 >後端開發 >C#.Net教程 >C# 中的位元運算符

C# 中的位元運算符

WBOY
WBOY原創
2024-09-03 15:08:43817瀏覽

位元運算子只不過是在位元層級上進行的運算,C# 允許使用 AND、OR、NOT 等運算子進行各種位元運算。通常用於位元運算的運算子是AND (&),它傳回true當兩個運算元都為true 時,OR (|) 僅當運算元為true 時傳回true,Exclusive OR(XOR 或^)依輸入傳回可比較的結果,Left Shift (>) 用於將位元向右移動,補碼(~) 用於單一操作數,它根據輸入返回補碼位值。

C# 中的位元運算子類型

以下是 C# 中定義的各種類型的位元運算子:

  • 位元與 (&):第一個操作數的每一位都與其第二個操作數的每一位相關聯。當兩個位元都為 1 時,如果結果位元不為 0,則結果位元為 1。
  • 位元 OR(|):第一個操作數的每一位都與其第二個操作數的每一位相關聯。若任一位為 1,則結果位元為 1(如果不是 0)。
  • 位元異或 (XOR – ^):第一個運算元的每一位元都可與其第二個運算元的後續位元進行比較。當一位為 ​​0 且另一位為 1 時,結果位元為 1,否則結果位元為 0。
  • 位元左移 (將數字向左移動,取決於定義的位數。零被附加到最小的位。
  • 位元右移 (>>):依照定義的位數將數字向右移動。零被附加到最小的位元。
  • 位元補 (~):位元補運算子是一種只對一個運算元運算的一元運算子。 ~ 運算子從 1 切換到 0,從 0 切換到 1。

C# 中的位元運算子範例

下面的文章解釋了位元運算子的工作原理,下面提到的是 C# 中位元運算子的範例:

1.位元與

如果兩個值都為 True,則在使用 AND 運算時僅給出 True。此運算符可以使用“&”運算符來實現。

範例:

using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
byte myvarA = 10;// This binary is equivalent for 10 is 01010
byte myvarB = 20;// This binary is equivalent for 20 is 10100
long myresult = myvarA & myvarB; // The result of AND operation result is: 00000
Console.WriteLine("{0}  AND  {1} result is :{2}",myvarA,myvarB,myresult);
myvarA = 10;// This binary is equivalent for 10 is 01010
myvarB = 10;// This binary is equivalent for 10 is 01010
myresult = myvarA & myvarB; // The result of AND operation result is: 01010
Console.WriteLine("{0}  AND  {1} result is : {2}",myvarA,myvarB,myresult);
}
}

輸出:

開啟文字編輯器並使用您選擇的名稱儲存副檔名為 .cs 的檔案。使用合適的 C# 編譯器執行程序,您將得到以下輸出:

C# 中的位元運算符

2.位元或

如果兩個值都是 FALSE,則在使用 OR 方法時僅提供 FALSE。 OR 運算在所有其他情況下均成立。該運算子可以使用‘|’運算子來實現。

範例:

using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
byte myvarA = 10;// This binary is equivalent for 10 is 01010
byte myvarB = 20;// This binary is equivalent for 20 is 10100
long myresult = myvarA | myvarB; // The result of OR operation result is: 11110
Console.WriteLine("{0}  OR  {1} result is :{2}",myvarA,myvarB,myresult);
myvarA = 10;// This binary is equivalent for 10 is 01010
myvarB = 10;// This binary is equivalent for 10 is 01010
myresult = myvarA | myvarB; // The result of OR operation result is: 01010
Console.WriteLine("{0}  OR  {1} result is : {2}",myvarA,myvarB,myresult);
}
}

輸出:

編譯並執行上面的程式碼,你將得到以下輸出:

C# 中的位元運算符

3.位元異或

如果相關位元唯一,則給予 1,否則給予 0。此運算符可以使用“^”運算符來實現。

範例:

using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
int num1 = 14, num2 = 11, myresult;
myresult = num1^num2;
Console.WriteLine("{0} ^ {1} = {2}", num1, num2, myresult);
}
}

輸出:

編譯並執行上面的程式碼,你將得到以下輸出:

C# 中的位元運算符

4.位元右移

如果對二進位值執行右移運算,則這些位元會移到右側的一個位置。該運算子可以透過使用‘>>’運算子來實現。

範例:

using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
byte myvarA = 10;// This binary is equivalent for 10 is 01010
long myresult = myvarA >> 1; // The right shift operation result is : 0101
Console.WriteLine("{0} is right shifted to 1 position result is:{1}",myvarA,myresult);
}
}

輸出:

編譯並執行上面的程式碼,你將得到以下輸出:

C# 中的位元運算符

5.位元左移

如果使用二進位值執行 LeftShift 運算,則這些位元將會移到左側的一個位置。此運算符可以使用“

範例:

using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
byte myvarA = 10;// This binary is equivalent for 10 is 01010
long myresult = myvarA << 1; // The left shift operation result is : 10100
Console.WriteLine("{0} is left shifted to 1 position result is:{1}",myvarA,myresult);
}
}

輸出:

編譯並執行上面的程式碼,你將得到以下輸出:

C# 中的位元運算符

6.按位補

按位求補運算子由「~」指定,它是一種僅對一個運算元進行運算的一元運算子。 ~ 運算子反轉一點,即從 1 切換到 0 以及從 0 切換到 1。

範例:

using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
int num = 22, num_result;
num_result = ~num;
Console.WriteLine("~{0} = {1}", num, num_result);
}
}

輸出:

編譯並執行上面的程式碼,你將得到以下輸出:

C# 中的位元運算符

結論

在本文中,我們了解如何在 C# 中使用位元運算子及其功能。這些運算子用於對操作數(也稱為二進位數字)執行逐位運算。位元運算子逐個單元分析兩個輸入函數的二進位解釋。這些運算符主要用於通訊堆疊,其中重要資訊由連接到資料的標頭中的各個位元來表示。

以上是C# 中的位元運算符的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn