相关疑难解决方法(0)

如何检查值是否具有奇偶校验位或奇数?

如果具有偶数1位,则值具有偶数奇偶校验.如果具有奇数1位,则该值具有奇校验.例如,0110具有偶校验,并1110具有奇校验.

1如果x有平价,我必须返回.

int has_even_parity(unsigned int x) {
    return 
}
Run Code Online (Sandbox Code Playgroud)

c bits

11
推荐指数
4
解决办法
3万
查看次数

奇数位的位奇偶校验码

我试图找到一个位串的奇偶校验,如果x有一个奇数#为0,它返回1.
我只能使用基本的按位运算,到目前为止,我已经通过了大部分测试,但我想知道两件事:

  1. 为什么x ^(x + ~1)有效?我偶然发现了这个问题,但如果有奇数个位,那么它似乎会给你1,如果是偶数则会给你一些东西.像7 ^ 6 = 1,因为7 = 0b0111

  2. 这是解决问题的正确方向吗?我假设我的问题源于第一次操作,特别是(x + ~1),因为它会溢出某些2的补码数.谢谢

码:

int bitParity(int x) {
    int first = x ^ (x + ~1);
    int second = first ^ 1; // if first XOR gave 1 you'll return 0 here
    int result = !!second;
return result;
}
Run Code Online (Sandbox Code Playgroud)

c bit-manipulation bit parity

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×2

bit ×1

bit-manipulation ×1

bits ×1

parity ×1