题目
类型:位运算
解题思路
利用交替位二进制数性质。
当给定值 n 为交替位二进制数时,将 n 右移一位得到的值 m 仍为交替位二进制数,且与原数 n 错开一位
两者异或能够得到形如 0000…1111的结果 x
对 x 执行加法能够得到形如 0000…10000 的结果,将该结果与 x 执行按位与后能够得到全 0 结果。
代码
class Solution {public boolean hasAlternatingBits(int n) {int x = n ^ (n >> 1);return (x & (x + 1)) == 0;}}
