此时该表达式的作用如下
n: 1 2 3 4 5…
表达式值 2 1 4 3 6…
该规律为如果num为奇数则执行num= num+1
如果式偶数则为num = num - 1操作
(num + 1) ^ 1 - 1:此时如果num为奇数此时执行结果为偶数^1结果肯定为偶数加1操作,因为如果一个数为偶数,其二进制值权值最低的位一定为0,反之如果是奇数,其权值最低的位一定为奇数.
原理:此时二进制权值分别代表的数分别为1,2,4,8,… , n2。此时一个数的表示位=各位基数指定权值的和相加,此时二进制可以简化理解为二进制数就是由各位权值的值拼凑而来,即可以从权值的数中取某一些数,但是每个数只能取1次,试想一下,此时只有1为奇数,其余的都为偶数,所以如果最终的数为奇数,此时必定没有取1这个数,所以对应的权值最低位肯定为0。如果为奇数则权值最低位肯定为1。由此性质,偶数异或1=该数+1,奇数异或1=该数-1
故此时有
- n为奇数则表达式值为n+1
- n为偶数则表达式值表示n-1.