#include <iostream>
#include <iomanip>
#include <bitset>
#include <limits>
void flipBits( unsigned long value) {
std:: bitset < std:: numeric_limits < unsigned long > :: digits > bits( value) ;
std:: cout << "Original value : 0x" << std:: hex << value;
value = bits.flip ( ) .to_ulong ( ) ;
std:: cout << ", Value after flip: 0x" << std:: hex << value << std:: endl ;
}
int main( ) {
flipBits( 0x12345678 ) ;
flipBits( 0x11223344 ) ;
flipBits( 0xabcdef12 ) ;
flipBits( 15 ) ;
flipBits( 0xffffffff ) ;
flipBits( 0x0 ) ;
return 0 ;
}
ICAgICNpbmNsdWRlIDxpb3N0cmVhbT4KICAgICNpbmNsdWRlIDxpb21hbmlwPgogICAgI2luY2x1ZGUgPGJpdHNldD4KICAgICNpbmNsdWRlIDxsaW1pdHM+CiAgICAKICAgIHZvaWQgZmxpcEJpdHModW5zaWduZWQgbG9uZyB2YWx1ZSkgewogICAgCXN0ZDo6Yml0c2V0PHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgbG9uZz46OmRpZ2l0cz4gYml0cyh2YWx1ZSk7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJPcmlnaW5hbCB2YWx1ZSA6IDB4IiA8PCBzdGQ6OmhleCA8PCB2YWx1ZTsKICAgIAogICAgICAgIHZhbHVlID0gYml0cy5mbGlwKCkudG9fdWxvbmcoKTsKICAgICAgICBzdGQ6OmNvdXQgPDwgIiwgVmFsdWUgYWZ0ZXIgZmxpcDogMHgiIDw8IHN0ZDo6aGV4IDw8IHZhbHVlIDw8IHN0ZDo6ZW5kbDsKICAgIH0KICAgIAogICAgaW50IG1haW4oKSB7CiAgICAgICAgZmxpcEJpdHMoMHgxMjM0NTY3OCk7CiAgICAgICAgZmxpcEJpdHMoMHgxMTIyMzM0NCk7CiAgICAgICAgZmxpcEJpdHMoMHhhYmNkZWYxMik7CiAgICAgICAgZmxpcEJpdHMoMTUpOwogICAgICAgIGZsaXBCaXRzKDB4ZmZmZmZmZmYpOwogICAgICAgIGZsaXBCaXRzKDB4MCk7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9Cg==
stdout
Original value : 0x12345678, Value after flip: 0xedcba987
Original value : 0x11223344, Value after flip: 0xeeddccbb
Original value : 0xabcdef12, Value after flip: 0x543210ed
Original value : 0xf, Value after flip: 0xfffffff0
Original value : 0xffffffff, Value after flip: 0x0
Original value : 0x0, Value after flip: 0xffffffff