#include <stdio.h>
void print_bits(unsigned int n) {
for (int i = 3; i >= 0; i--)
printf("%d", (n >> i) & 1);
printf("\n");
}
unsigned int is_all_bits_set(unsigned int n) {
return (n + 1) & n;
}
int main(int argc, char **argv)
{
int n = 15;
print_bits(n);
print_bits(n + 1);
print_bits((n + 1) & n);
if (is_all_bits_set(n) == 0) {
printf("Yes\n");
}
else {
printf("No\n");
}
n = 13;
print_bits(n);
print_bits(n + 1);
print_bits((n + 1) & n);
if (is_all_bits_set(n) == 0) {
printf("Yes\n");
}
else {
printf("No\n");
}
return 0;
}
/*
run:
1111
0000
0000
Yes
1101
1110
1100
No
*/