fork download
  1. #include <iostream>
  2. #include <iomanip>
  3.  
  4. using namespace std;
  5.  
  6. unsigned long long magic(unsigned long long x)
  7. {
  8. unsigned long long mask = ~(x & 0x1111111111111111);
  9. mask &= (mask << 1) | 1;
  10. mask &= (mask << 2) | 3;
  11. return x&mask;
  12. }
  13.  
  14. void test(unsigned long long x)
  15. {
  16. cout << hex << setfill('0') << setw(16) << x << endl;
  17. cout << hex << setfill('0') << setw(16) << magic(x) << endl << endl;
  18. }
  19.  
  20. int main(int argc, const char * argv[])
  21. {
  22. test(0x12562451ba221630);
  23. test(0x752375de0a221831);
  24. test(0xcfcf24322a221e42);
  25. test(0xffffeeee1a221137);
  26.  
  27. }
  28.  
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
12562451ba221630
020624000a220600

752375de0a221831
0020000e0a220800

cfcf24322a221e42
c0c024022a220e42

ffffeeee1a221137
0000eeee0a220000