判断一个数字的二进制形式是不是01交替的。
如5=101,返回True
如7=111,返回False
这道题可以用位运算来实现。看到01交替,就想到移位运算。如果n是01交替的,移位之后进行异或,则得到的数字x各个位都是1。也就是x=n^(n>>1)
剩下的任务就是判断一个数字是否是2的幂减一。也就是((x+1)&x)==0
判断一个数字的二进制形式是不是01交替的。
如5=101,返回True
如7=111,返回False
这道题可以用位运算来实现。看到01交替,就想到移位运算。如果n是01交替的,移位之后进行异或,则得到的数字x各个位都是1。也就是x=n^(n>>1)
剩下的任务就是判断一个数字是否是2的幂减一。也就是((x+1)&x)==0