#include <stdio.h>
void show_bits(int n, int size) {
for (int i = 1 << (size - 1); i > 0; i = i / 2)
(n & i) ? printf("1") : printf("0");
}
int setRightmostUnsetBit(int n) {
if ((n & (n + 1)) == 0)
return n;
return n | (n + 1);
}
int main() {
int n = 25;
show_bits(n, 8);
printf("\n");
show_bits(setRightmostUnsetBit(n), 8);
return 0;
}
/*
run:
00011001
00011011
*/