#include <cstdio>
void print_bit_repr( int x) {
for ( int i = 1 << 8 ; i > 0 ; i>>= 1 )
printf ( "%c" , ( x & i) ? '1' : '0' ) ;
printf ( "\n " ) ;
}
void set( int & x, int pos) { x | = ( 1 << pos) ; }
void unset( int & x, int pos) { x & = ~( 1 << pos) ; }
bool is_set( int & x, int pos) { return x & ( 1 << pos) ; }
void unset_lowest_bit( int & x) { x & = ( x- 1 ) ; }
int main( ) {
int a = 0 ;
set( a, 1 ) ; print_bit_repr( a) ;
set( a, 2 ) ; print_bit_repr( a) ;
for ( int i = 0 ; i < 8 ; ++ i)
printf ( "%d is set : %s\n " , i, is_set( a, i) ? "YES" : "NO" ) ;
unset( a, 1 ) ; print_bit_repr( a) ;
unset( a, 2 ) ; print_bit_repr( a) ;
set( a, 3 ) ; print_bit_repr( a) ;
set( a, 5 ) ; print_bit_repr( a) ;
unset_lowest_bit( a) ; print_bit_repr( a) ;
unset_lowest_bit( a) ; print_bit_repr( a) ;
return 0 ;
}
I2luY2x1ZGUgPGNzdGRpbz4KCnZvaWQgcHJpbnRfYml0X3JlcHIoaW50IHgpIHsKICAgIGZvciAoaW50IGkgPSAxPDw4OyBpID4gMDsgaT4+PTEpCiAgICAgICAgcHJpbnRmKCIlYyIsICh4ICYgaSkgPyAnMScgOiAnMCcpOwogICAgcHJpbnRmKCJcbiIpOwp9Cgp2b2lkIHNldChpbnQgJiB4LCBpbnQgcG9zKSB7IHggfD0gKDEgPDwgcG9zKTsgfQp2b2lkIHVuc2V0KGludCAmIHgsIGludCBwb3MpIHsgeCAmPSB+KDEgPDwgcG9zKTsgfQpib29sIGlzX3NldChpbnQgJiB4LCBpbnQgcG9zKSB7IHJldHVybiB4ICYgKDEgPDwgcG9zKTsgfQoKdm9pZCB1bnNldF9sb3dlc3RfYml0KGludCAmIHgpIHsgeCAmPSAoeC0xKTsgfQoKaW50IG1haW4oKSB7CiAgICBpbnQgYSA9IDA7CgogICAgc2V0KGEsIDEpOyBwcmludF9iaXRfcmVwcihhKTsgCiAgICBzZXQoYSwgMik7IHByaW50X2JpdF9yZXByKGEpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCA4OyArK2kpCiAgICAgICAgcHJpbnRmKCIlZCBpcyBzZXQgOiAlc1xuIiwgaSwgaXNfc2V0KGEsIGkpID8gIllFUyIgOiAiTk8iKTsKICAgIHVuc2V0KGEsIDEpOyBwcmludF9iaXRfcmVwcihhKTsgCiAgICB1bnNldChhLCAyKTsgcHJpbnRfYml0X3JlcHIoYSk7CiAgICAKICAgIHNldChhLCAzKTsgcHJpbnRfYml0X3JlcHIoYSk7IAogICAgc2V0KGEsIDUpOyBwcmludF9iaXRfcmVwcihhKTsKICAgIHVuc2V0X2xvd2VzdF9iaXQoYSk7IHByaW50X2JpdF9yZXByKGEpOyAKICAgIHVuc2V0X2xvd2VzdF9iaXQoYSk7IHByaW50X2JpdF9yZXByKGEpOyAKCiAgICByZXR1cm4gMDsKfQo=