这一段代码对吗?为什么这么写?本蒟蒻看不懂555
inline int bit_count(int n) {
n = n - ((n >> 1) & 0x55555555);
n = (n & 0x33333333) + ((n >> 2) & 0x33333333);
n = (n + (n >> 4)) & 0x0F0F0F0F;
n = n + (n >> 8);
n = n + (n >> 16);
return n & 0x3F;
}
inline int bit_count(long long n) {
n = n - ((n >> 1) & 0x5555555555555555);
n = (n & 0x3333333333333333) + ((n >> 2) & 0x3333333333333333);
n = (n + (n >> 4)) & 0x0F0F0F0F0F0F0F0F;
n = n + (n >> 8);
n = n + (n >> 16);
n = n + (n >> 32);
return n & 0x7F;
}