位运算符和移位运算符包括一元位补、二进制左移和右移、无符号右移、二进制逻辑 AND、OR 和异或运算符。 这些操作数采用整型数值类型或字符型操作数。
一元 ~(按位求补)运算符二进制 (右移)和 >>>(无符号右移)运算符二进制 &(逻辑 AND)、|(逻辑 OR)和 ^(逻辑异或)运算符这些运算符是针对 int、uint、long 和 ulong 类型定义的。 如果两个操作数都是其他整数类型(sbyte、byte、short、ushort 或 char),它们的值将转换为 int 类型,这也是一个运算的结果类型。 如果操作数是不同的整数类型,它们的值将转换为最接近的包含整数类型。 有关详细信息,请参阅 C# 语言规范的数值提升部分。 复合运算符(如 >>=)不会将其参数转换为 int,也不会具有结果类型 int。
&、| 和 ^ 运算符也是为 bool 类型的操作数定义的。 有关详细信息,请参阅布尔逻辑运算符。
位运算和移位运算永远不会导致溢出,并且不会在已检查和未检查的上下文中产生相同的结果。
按位求补运算符 ~~ 运算符通过反转每个位产生其操作数的按位求补:
uint a = 0b_0000_1111_0000_1111_0000_1111_0000_1100;uint b = ~a;Console.WriteLine(Convert.ToString(b, toBase: 2));// Output:// 11110000111100001111000011110011也可以使用 ~ 符号来