以下代码来自元素编程访谈,了解如何查找数字的奇偶校验。
如果数字中有奇数个1,则数字的奇偶校验应为1。否则,它应该是0.
1011应该返回1
但是,书中的代码给出了1011的0。我错过了什么?
public static short parityBitByBit(long x) {
short result = 0;
while(x != 0) {
result ^= (x & 1);
x >>>= 1;
}
return result;
}
并且,我发现了另一个具有相同意外结果的代码示例
addTo
是否忽略了符号位?
答案 0 :(得分:1)
1011
(十进制)是0b1111110011
(二进制)。并且, 的偶数数量为1
位。