一些特殊的等价运算:
x & 7 <=> x % 8
x / 2 <=> x >> 2
x * 2 <=> x << 2
对于位运算的处理,必须要掌握的是:二进制,补码。
注意事项:
如:int在计算机中存储的方式为补码(最高位是符号位),
当进行右移操作时默认补0(原来符号位可能是1表示负数),
会出现数据错误。
3种位操作
-
置位:将一个字节中的一位置为1(从0开始,从前往后)
方法://将value这个字节的第index位置为1 #define SETB(value, index) (value |= 1 << ((index) ^ 7)) -
清位:将一个字节中的一位置为0
方法://将value这个字节的第index位置为0 #define CLRB(value, index) (value &= ~(1 << ((index) ^ 7))) -
取位:取出一位的值
方法://取出value的第index位的值 #define GETB(value, index) (((value) & (1 << ((index) ^ 7))) != 0)

被折叠的 条评论
为什么被折叠?



