查找数字奇偶校验的意外值

时间:2017-02-05 04:40:36

标签: java bit-manipulation parity

以下代码来自元素编程访谈,了解如何查找数字的奇偶校验。

如果数字中有奇数个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

是否忽略了符号位?

1 个答案:

答案 0 :(得分:1)

1011(十进制)是0b1111110011(二进制)。并且, 偶数数量为1位。