C#位运算符
·
一.常用位运算符介绍
常见的位运算符包括:
- << 左移
- >> 右移
- & 位与
- | 位或
- ^ 位异或
- ~ 位非
一.<<左移运算符
作用:二进制位向左移动,右侧补0。
记忆方法:a 相当于 a × 2^n。
示例:
2 << 2 // 2 * 2^2 = 8,二进制 10 -> 1000
23 << 3 // 23 * 2^3 = 184
二.>> 右移运算符
作用:二进制位向右移动,左侧补0(正数)或1(负数)。
记忆方法:a >> n 相当于 a / 2^n,结果向下取整。
示例:
2 >> 2 // 2 / 2^2 = 0,二进制 0000 0010 -> 0000 0000
三.& 位与运算符
规则:对应位都为1时结果才为1
示例:
1000 & 1010 // 结果为1000(二进制),即8(十进制)
四.| 位或运算符
规则:只要有一位为1,结果就是1
示例:
1000 | 1010 // 结果为1010(二进制),即10(十进制)
五.^ 位异或运算符
规则:相同为0,不同为1
1 ^ 1 = 0
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1000 ^ 1010 // 结果为0010(二进制),即2(十进制)
六.~ 位非运算符
规则:按位取反,0变1,1变0。
记忆方法:~a = -(a) - 1
~8
// 8的二进制(32位):00000000 00000000 00000000 00001000
// 取反:11111111 11111111 11111111 11110111
// 转换为十进制:-9
~(-8) = 7
注意事项
- 作用对象必须是数值类型(整数)。
- 运算结果也是数值类型。
- 位运算思路与逻辑运算符类似,1表示true,0表示false。
代码示例
// 作用对象是:数,二进制数
// <<(左移位), >>(右移位), &(与运算), |(或运算), ^(异或), ~(非)
Debug.Print(3 << 2); // 0000 0011 << 2 => 0000 1100 => 12
Debug.Print(5 >> 2); // 0000 0101 >> 2 => 0000 0001 => 1
Debug.Print(3 & 5); // 0000 0011 & 0000 0101 => 0000 0001 => 1
Debug.Print(3 | 5); // 0000 0011 | 0000 0101 => 0000 0111 => 7
Debug.Print(3 ^ 5); // 0000 0011 ^ 0000 0101 => 0000 0110 => 6
Debug.Print(~8); // ~0000 1000 => 1111 0111(补码)=> -9
更多推荐
所有评论(0)