693. 交替位二进制数
题目:
给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。
难度:简单
解题报告
判断二进制是否总是0/1交替出现,二进制只有0-1,所以可以判断相邻两位是否相同即可。关键在于如何获得相邻两位的二进制值:
- 位运算
- 通过和1相与,也就是 xxxxxx & 0000001,可得到最后一位
- 位右移一位,再&1,可得到倒数第二位
- 判断这两个值是否相等
- 循环重复,直到
代码
bool hasAlternatingBits(int n){
int i = n&1;
n = n >> 1;
while(n){
int j = n&1;
if(i == j){
return false;
}
i = j;
n = n >> 1;
}
return true;
}