C# 位运算符仅适用于数字。在这些运算符对给定的输入(数字)进行操作之前,系统会将该数字从十进制转换为二进制。然后,位运算符对其二进制位执行操作。最后,将二进制位转换回十进制后,结果以十进制形式显示给我们。
输入(十进制)->(十进制转二进制)-> C# 位运算符对位执行必要的操作 -> 位转换为十进制 -> 结果以十进制形式显示。
| 运算 | 示例 |
|---|---|
| & 按位与 | 16 & 10 =0 |
| | 按位或 | 16 | 10 =26 |
| ~ 按位补码 | ~16= -17 |
| ^ 异或 | 16 ^ 10=26 |
让我们看看这些位运算符的真值表。
| X | y | x & y | x | y | x ^ y |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
C# 位运算符示例
下面的示例向您展示了所有位运算符的工作功能。
using System;
class Bitwise_Operators
{
static void Main()
{
int x = 16;
int y = 10;
int result;
result = ~x;
Console.WriteLine("~{0} is {1}", x, result);
result = x & y;
Console.WriteLine("{0} & {1} = {2}", x, y, result);
result = x | y;
Console.WriteLine("{0} | {1} = {2}", x, y, result);
result = x ^ y;
Console.WriteLine("{0} ^ {1} = {2}", x, y, result);
}
}

x = 16 且 y = 10
C# 位运算执行如下
首先,将 16 和 10 转换为位,16 的二进制形式是 10000,10 的二进制形式是 1010。
~(16) 是 -17,这是 16 的二进制补码。
10000 & 01010 是 00000 – 结果是 0
10000 | 01010 是 11010 – 11010 的十进制形式是 26
10000 ^ 01010 是 11010 – 11010 的十进制形式是 26
C# 移位运算符
C# 位移位运算符移动位的位置。这意味着左操作数的位位置会向左或向右移动,移动的位置数由右操作数指定。C# 通过右移 (>>) 和左移 (<<) 运算符实现位移。
| 移位运算符 | 运算 | 示例 |
|---|---|---|
| >> | 右移操作 | 16 >> 3 是 |
| << | 左移操作 | 16 << 2 |
让我们看一个使用这些位移位运算符的示例代码。
位左移和右移运算符示例
using System;
class Shift_Operators
{
static void Main()
{
int x = 16;
int result;
result = x >> 3;
Console.WriteLine("{0} >> 3 is {1}", x, result);
result = x << 2;
Console.WriteLine("{0} << 2 is {1}", x, result);
}
}
输出
16 >> 3 is 2
16 << 2 is 64
在上面的代码中
16 >> 3,16 的二进制形式是 0001 0000
10000 向右移动三位,即 0000 0010,其十进制值为 2。
16 << 2,将 16 的二进制形式,即 0001 0000,向左移动 2 位后,结果是 0100 0000,其十进制形式是 64。