我必须创建一个函数 bitParity(int x),它接受一个整数,如果 x 的位形式中有奇数个 0,则返回 1,否则返回 0。
例如:bitParity(5) = 0, bitParity(7) = 1 合法操作:!~ & ^ | + << >>
我的朋友与我分享了他的代码,但是当我从头开始计算时,它似乎与他得到的相反,有人可以稍微解释一下这段代码,以便我了解它是如何运作的吗?
int bitParity(int x) {
x = ( x >> 16 ) ^ x;
x = ( x >> 8 ) ^ x;
x = ( x >> 4 ) ^ x;
x = ( x >> 2 ) ^ x;
x = ( x >> 1 ) ^ x;
return (x & 1);
}