leetcode693:Binary Number with Alternating Bits

判断一个数字的二进制形式是不是01交替的。
如5=101,返回True
如7=111,返回False

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

原文地址:https://www.cnblogs.com/weiyinfu/p/7637414.html