#include <iostream>
#include <bitset>
using namespace std;
#define ONES (~0ULL)
#define MASK(from_bit, nbits) \
(ONES << (from_bit)) - (ONES << (from_bit) << (nbits))
inline unsigned long long mask( unsigned from_bit, unsigned nbits) {
return ( ONES << from_bit) - ( ONES << from_bit << nbits) ;
}
int main( int argc, char ** argv) {
cout << "using #define: " << bitset< 64 > ( MASK( 63 , 3 ) ) << endl;
cout << "using inline function: " << bitset< 64 > ( mask( 63 , 3 ) ) << endl;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0c2V0Pgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBPTkVTICh+MFVMTCkKCiNkZWZpbmUgTUFTSyhmcm9tX2JpdCwgbmJpdHMpIFwKICAoT05FUyA8PCAoZnJvbV9iaXQpKSAtIChPTkVTIDw8IChmcm9tX2JpdCkgPDwgKG5iaXRzKSkKCmlubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgbWFzayh1bnNpZ25lZCBmcm9tX2JpdCwgdW5zaWduZWQgbmJpdHMpIHsKICByZXR1cm4gKE9ORVMgPDwgZnJvbV9iaXQpIC0gKE9ORVMgPDwgZnJvbV9iaXQgPDwgbmJpdHMpOwp9CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKICBjb3V0IDw8ICJ1c2luZyAjZGVmaW5lOiAgICAgICAgICIgPDwgYml0c2V0PDY0PihNQVNLKDYzLCAzKSkgPDwgZW5kbDsKICBjb3V0IDw8ICJ1c2luZyBpbmxpbmUgZnVuY3Rpb246ICIgPDwgYml0c2V0PDY0PihtYXNrKDYzLCAzKSkgPDwgZW5kbDsKICByZXR1cm4gMDsKfQo=