如果值具有偶数的1位,则它具有偶校验。如果值的奇数为1位,则它具有奇校验。例如,0110
具有偶数奇偶校验,而1110
具有奇数奇偶校验。
如果1
具有偶校验,我必须返回x
。>
int has_even_parity(unsigned int x) {
return
}
如果值具有偶数的1位,则它具有偶校验。如果值的奇数为1位,则它具有奇校验。例如,0110具有偶数奇偶校验,而1110具有奇数奇偶校验。我必须返回...
尝试:
x ^= x >> 16;
x ^= x >> 8;
x ^= x >> 4;
x ^= x >> 2;
x ^= x >> 1;
return (~x) & 1;
x & ( x - 1 )
将最右边的“ 1”位置1。假设x = 13(1101)并且x & ( x - 1 )
的运算是1101 & 1100
,即1100,请注意,最右边的设置位转换为0
。int parity_check(unsigned x) {
int parity = 0;
while(x != 0) {
parity ^= x;
x >>= 1;
}
return (parity & 0x1);
}
单行#define