fork download
  1. #include <iostream>
  2. #include <bitset>
  3. using namespace std;
  4.  
  5. #define ONES (~0ULL)
  6.  
  7. #define MASK(from_bit, nbits) \
  8.   (ONES << (from_bit)) - (ONES << (from_bit) << (nbits))
  9.  
  10. inline unsigned long long mask(unsigned from_bit, unsigned nbits) {
  11. return (ONES << from_bit) - (ONES << from_bit << nbits);
  12. }
  13.  
  14. int main(int argc, char **argv) {
  15. cout << "using #define: " << bitset<64>(MASK(63, 3)) << endl;
  16. cout << "using inline function: " << bitset<64>(mask(63, 3)) << endl;
  17. return 0;
  18. }
  19.  
Success #stdin #stdout 0s 3028KB
stdin
Standard input is empty
stdout
using #define:         1000000000000000000000000000000000000000000000000000000000000000
using inline function: 1000000000000000000000000000000000000000000000000000000000000000