文章目录
URL
题目
分析
源码
工程结构
.
└── main_694.c
源码文件
/* main_694.c */
#include <stdio.h>
#include <stdbool.h>
bool has_alternating_bits(int n ){
long a = n ^ (n >> 1); // 10101010... ^ 01010101... => 11111111...
return (a & (a + 1)) == 0; // 11111111... & 1 00000000... => 0 00000000 == 0 => true
}
void print_bits(int n){
//for (int i = sizeof(n)*X; i > 0; --i){
for (int i = sizeof(n); i > 0; --i){
printf("%c",((n & (1 << i)) == 0 ? '0' : '1'));
}
printf("\n");
}
int main()
{
int n = 0;
bool ret = true;
const int arr[] = {5,7,11}; // return true,false,false
for (unsigned int i = 0; i < (unsigned int)( sizeof(arr)/sizeof(arr[0])); ++i){
n = arr[i];
printf("input n = %d , bits = ",n);
print_bits(n);
ret = has_alternating_bits(n);
printf("ret = %s\n\n",ret == true ? "true" : "flase");
}
return 0;
}
LOG参考:
input n = 5 , bits = 0010
ret = true
input n = 7 , bits = 0011
ret = flase
input n = 11 , bits = 0101
ret = flase