位操作符:
OR (|) | AND (&) | XOR (^) | Left Shift (<<) | Right Shift (>>) | Not (~) |
1|0=1 | 1&0=0 | 1^0=1 | 0010<<2=1000 | 1100>>2=0011 | ~1=0 |
1. a ^ a = 0
2. a ^ b = b ^ a
按位或(OR)
按位或处理两个长度相同的二进制数,两个相应的二进位中只要有一个为1,该位的结果值为1。例如
0101(十进制5) OR 0011(十进制3) = 0111(十进制7)
按位异或(XOR)
按位异或运算,对等长二进制模式按位或二进制数的每一位执行逻辑异按位或操作。操作的结果是如果某位不同则该位为1,否则该位为0。例如
0101 XOR 0011 = 0110
按位与(AND)[编辑]
按位与处理两个长度相同的二进制数,两个相应的二进位都为1,该位的结果值才为1,否则为0。例如:
0101 AND 0011 = 0001常用方法:
- 1. n & (n-1)能够消 除n中最右侧的一个1。
- 2. 左移 << 右移>>
- 3. (a >> x) & 1 或者 a & (1 << x) 判断a的x位是否为0
- 4. num | (1 << i) 把num的第i位置为1
没有评论:
发表评论