6

顺序是:

00111011

我如何计算上述序列的奇偶校验位?这个问题来自 Databases- Jeffery ullman 的完整书(练习 13.4.1 a

我不确定这个问题的答案应该是什么。

是不是很简单:

i)偶校验:1 的数量是 5(奇数)所以只需附加一个 1,答案是:001110111

ii)奇偶校验:同样,只需附加 0: 001110110

或者:

我在这里走错了路吗?我在网上查了一下,但找不到任何具体的东西。另外,课本中上述问题的文字不清楚。

4

4 回答 4

13

是的,你的答案是正确的。对于给定的序列,

00111011

奇校验为001110110,奇偶校验位为零,因此代码中 1 的总数为 5,为奇数。

偶校验为001110111,奇偶校验位为 1,因此代码中 1 的总数为 6,这是一个偶数。

于 2013-03-23T20:00:53.333 回答
2

您也可以使用 XOR 即;00111011

0XOR0=0
0XOR0=0
0XOR1=1
1XOR1=0
0XOR1=1
1XOR0=1
1XOR1=0
0XOR1=1

, 最后一位是奇偶校验位;1 表示偶校验,0 表示奇校验。您应该将此位设为原始数字 (00111011) 的 LSB,从而变为 (001110111)。

于 2014-11-02T06:35:38.070 回答
2
unsigned char CalEvenParity(unsigned char data)
{
unsigned char parity=0;

while(data){
        parity^=(data &1);
        data>>=1;
            }
return (parity);
}
于 2016-07-23T17:03:37.263 回答
1

奇偶校验的替代实现:

这涉及在整数中特定数字的连续位之间进行 XOR。

x>>1 将值左移 1 位,而 & 1 得到数字最后一位的值。

整个序列的奇偶校验可以如下所示:- 即由于 XOR 的特性。

1 ^ 0 ^ 1 与 (1 ^ 0 ) ^ 1 相同,我们扩展相同。

def parity_val(x):
    parity=0
    while x>>1:
     parity =  (x & 1)^ ((x >>1) & 1)
     x = x>> 1
    return parity
于 2019-02-16T01:56:36.813 回答