首页  >  文章  >  后端开发  >  C# 中的按位运算符

C# 中的按位运算符

WBOY
WBOY原创
2024-09-03 15:08:43797浏览

位运算符只不过是在位级别上进行的运算,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