位运算满足的定律:
1、我们知道按位异或运算满足交换律和结合律,因此有:
a ^ b ^ c = (a ^ b) ^ c
(为方便打字,用符号 ^ 表示按位异或运算)
2、如果一次异或运算结果为0,那么这两个操作数一定是相等的,即:
a ^ b = 0 等价于 a = b
3、左移运算在没有高位“1”舍去的情况下,与“乘以2”运算结果等价,即:
a << 1 结果等价于 a * 2
4、进行二进制加法时,若没有任何进位发生,则两个数的加法运算结果与按位异或运算结果相等,即:
a + b 结果等价于 a ^ b
两个二进制数异或结果是多少? a^b = |a-b|
首先,可以随便写个数试一下。二进制数a与b异或,即a和b两个数按位进行,如果对应位相同,即为0(这个时候相当于对应位算术相减),如果不相同,即为1(这个时候相当于对应位算术相减的绝对值)。由于二进制每个位只有两种状态,要么是0,要么是1,则按位异或操作可以表达为按位相减取绝对值,再按位累加。
总结的很好,点赞