1 | | The test I was using when looking at this issue: |
2 | | |
3 | | {{{#!cpp |
4 | | // zeroLowerBits. |
5 | | template<> |
6 | | template<> |
7 | | void object::test<4>() |
8 | | { |
9 | | constexpr int64 val = static_cast<int64>(0xffffffffffffffffull); |
10 | | ensure_equals(sizeof(val), 8); |
11 | | |
12 | | ensure_equals(CommonBits::zeroLowerBits(val, -1), 0); |
13 | | ensure_equals(CommonBits::zeroLowerBits(val, 0), 0); |
14 | | ensure_equals(CommonBits::zeroLowerBits(val, 1), -2); |
15 | | ensure_equals(CommonBits::zeroLowerBits(val, 2), -4); |
16 | | ensure_equals(CommonBits::zeroLowerBits(val, 16), -65536); |
17 | | ensure_equals(CommonBits::zeroLowerBits(val, 31), -2147483648ll); |
18 | | ensure_equals(CommonBits::zeroLowerBits(val, 32), -4294967296ll); |
19 | | ensure_equals(CommonBits::zeroLowerBits(val, 62), -4611686018427387904ll); |
20 | | ensure_equals(static_cast<uint64_t>(CommonBits::zeroLowerBits(val, 62)), 0xc000000000000000ull); |
21 | | ensure_equals(static_cast<uint64_t>(CommonBits::zeroLowerBits(val, 63)), 0x8000000000000000ull); |
22 | | ensure_equals(CommonBits::zeroLowerBits(val, 64), 0); |
23 | | ensure_equals(CommonBits::zeroLowerBits(val, 10000), 0); |
24 | | } |
25 | | }}} |
| 1 | Thanks! |