693. 交替位二进制数
给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等。
示例 1:
输入: 5
输出: True
解释:
5的二进制数是: 101
Solution:
1 2 3 4 5 6 7 8 9
| class Solution { public: bool hasAlternatingBits(int n) { //如果是奇偶交替,则n ^ (n >> 1) 会使有效位全为1, int temp = n ^ (n >> 1); //有效位全为1 再加1, 得到有效位前面为1,后面全为0,再与该数与,则全部清零。 return (temp & (temp+1)) == 0; } };
|