int hammingWeight(uint64_t n) { static constexpr uint64_t m2 = 0x0f0f0f0f0f0f0f0f; static constexpr uint64_t m1 = 0x3333333333333333; static constexpr uint64_t m0 = 0x5555555555555555; uint64_t y = n - ((n >> 1) & m0); y = (y & m1) + ((y >> 2) & m1); y = (y + (y >> 4)) & m2; return (y * 0x0101010101010101) >> 56; }