#include <stdio.h>
#include <stdbool.h>
void print_bits(unsigned int n) {
for (int i = 7; i >= 0; i--)
printf("%d", (n >> i) & 1);
printf("\n");
}
bool check_same_set_and_unset_bits(int n) {
int set = 0, unset = 0;
while (n) {
if (n & 1)
set++;
else
unset++;
n = n >> 1;
}
if (set == unset)
return true;
return false;
}
int main()
{
int n = 178;
print_bits(n);
if (check_same_set_and_unset_bits(n))
printf("Yes\n");
else
printf("No\n");
n = 179;
print_bits(n);
if (check_same_set_and_unset_bits(n))
printf("Yes\n");
else
printf("No\n");
return 0;
}
/*
run:
10110010
Yes
10110011
No
*/