diff --git a/base/bits.hpp b/base/bits.hpp index e85470210..7c90a142b 100644 --- a/base/bits.hpp +++ b/base/bits.hpp @@ -47,7 +47,7 @@ constexpr uint64_t PerfectShuffle(uint64_t x) { x = ((x & 0x00000000FFFF0000ULL) << 16) | ((x >> 16) & 0x00000000FFFF0000ULL) | (x & 0xFFFF00000000FFFFULL); x = ((x & 0x0000FF000000FF00ULL) << 8) | ((x >> 8) & 0x0000FF000000FF00ULL) | (x & 0xFF0000FFFF0000FFULL); - x = ((x & 0x0F000F000F000F00ULL) << 4) | ((x >> 4) & 0x0F000F000F000F00ULL) | (x & 0xF00FF00FF00FF00FULL); + x = ((x & 0x00F000F000F000F0ULL) << 4) | ((x >> 4) & 0x00F000F000F000F0ULL) | (x & 0xF00FF00FF00FF00FULL); x = ((x & 0x0C0C0C0C0C0C0C0CULL) << 2) | ((x >> 2) & 0x0C0C0C0C0C0C0C0CULL) | (x & 0xC3C3C3C3C3C3C3C3ULL); x = ((x & 0x2222222222222222ULL) << 1) | ((x >> 1) & 0x2222222222222222ULL) | (x & 0x9999999999999999ULL); return x; @@ -58,7 +58,7 @@ constexpr uint64_t PerfectUnshuffle(uint64_t x) { x = ((x & 0x2222222222222222ULL) << 1) | ((x >> 1) & 0x2222222222222222ULL) | (x & 0x9999999999999999ULL); x = ((x & 0x0C0C0C0C0C0C0C0CULL) << 2) | ((x >> 2) & 0x0C0C0C0C0C0C0C0CULL) | (x & 0xC3C3C3C3C3C3C3C3ULL); - x = ((x & 0x0F000F000F000F00ULL) << 4) | ((x >> 4) & 0x0F000F000F000F00ULL) | (x & 0xF00FF00FF00FF00FULL); + x = ((x & 0x00F000F000F000F0ULL) << 4) | ((x >> 4) & 0x00F000F000F000F0ULL) | (x & 0xF00FF00FF00FF00FULL); x = ((x & 0x0000FF000000FF00ULL) << 8) | ((x >> 8) & 0x0000FF000000FF00ULL) | (x & 0xFF0000FFFF0000FFULL); x = ((x & 0x00000000FFFF0000ULL) << 16) | ((x >> 16) & 0x00000000FFFF0000ULL) | (x & 0xFFFF00000000FFFFULL); return x;