按位与(&):对两个二进制数的每一位进行与运算,结果为1的位置上为1,其他位置上为0
1
。
按位或(|):对两个二进制数的每一位进行或运算,结果为1的位置上为1,其他位置上为0
1
。
按位异或(^):对两个二进制数的每一位进行异或运算,结果为1的位置上为0,其他位置上为1
1
。
取反(~):对一个二进制数进行取反运算,即将0变为1,将1变为0
1
。
左移(<<):将一个二进制数向左移动指定的位数,右边的位数用0填充
1
。
右移(>>):将一个二进制数向右移动指定的位数,对于无符号数高位补0,对于有符号数,有的编译器补符号位(算术右移),有的补0(逻辑右移)
2
3
。
位运算符号的特点和用途:
按位与(&):常用于清零操作或提取某一位的值。例如,3&5的结果为1,因为二进制表示中只有第三位同时为1。011 & 101 = 1
按位或(|):用于设置某一位为1。例如,3|5的结果为7,因为二进制表示中第三位被设置为1。011 I 101 = 111 = 7
按位异或():用于翻转某一位的值。例如,35的结果为6,因为二进制表示中第三位被翻转。 011 ^ 0101 = 110 =6
取反():用于反转一个数的所有位。例如,3的结果为-4,因为二进制表示中的所有位都被翻转。011~ = 100 别忘了正数转负数
左移(<<):用于将一个数的所有位向左移动指定的位数,相当于乘以2的n次方。例如,3<<2的结果为12,因为二进制表示向左移动两位。101<<2 = 10100 = 12 =322(这里的n就是你左移的位数)
右移(>>):用于将一个数的所有位向右移动指定的位数,相当于除以2的n次方。例如,12>>2的结果为3,因为二进制表示向右移动两位。10100>>2=101=3相当于12/4=3(这里的n就是你左移的位数2)