fork download
  1. #include <cstdio>
  2.  
  3. void print_bit_repr(int x) {
  4. for (int i = 1<<8; i > 0; i>>=1)
  5. printf("%c", (x & i) ? '1' : '0');
  6. printf("\n");
  7. }
  8.  
  9. void set(int & x, int pos) { x |= (1 << pos); }
  10. void unset(int & x, int pos) { x &= ~(1 << pos); }
  11. bool is_set(int & x, int pos) { return x & (1 << pos); }
  12.  
  13. void unset_lowest_bit(int & x) { x &= (x-1); }
  14.  
  15. int main() {
  16. int a = 0;
  17.  
  18. set(a, 1); print_bit_repr(a);
  19. set(a, 2); print_bit_repr(a);
  20. for (int i = 0; i < 8; ++i)
  21. printf("%d is set : %s\n", i, is_set(a, i) ? "YES" : "NO");
  22. unset(a, 1); print_bit_repr(a);
  23. unset(a, 2); print_bit_repr(a);
  24.  
  25. set(a, 3); print_bit_repr(a);
  26. set(a, 5); print_bit_repr(a);
  27. unset_lowest_bit(a); print_bit_repr(a);
  28. unset_lowest_bit(a); print_bit_repr(a);
  29.  
  30. return 0;
  31. }
  32.  
Success #stdin #stdout 0s 3456KB
stdin
Standard input is empty
stdout
000000010
000000110
0 is set : NO
1 is set : YES
2 is set : YES
3 is set : NO
4 is set : NO
5 is set : NO
6 is set : NO
7 is set : NO
000000100
000000000
000001000
000101000
000100000
000000000