Networking 如何计算以下位序列的奇偶校验位?

Networking 如何计算以下位序列的奇偶校验位?,networking,parity,hamming-code,Networking,Parity,Hamming Code,顺序是: 00111011 如何计算上述序列的奇偶校验位?这个问题来自数据库-jeffery ullman的全集(练习13.4.1 a) 我不确定这个问题的答案应该是什么 它是否简单到: i) 偶数奇偶校验:1的数目是5(奇数),因此只需附加1,答案是:001110111 ii)奇偶校验:同样,只需追加0:001110110 或: 我是不是走错了路?我在网上查了一下,但找不到任何具体的东西。此外,教科书中上述问题的文本不清楚。是的,您的答案是正确的。对于给定的序列 00111011 奇偶校验为0

顺序是:

00111011

如何计算上述序列的奇偶校验位?这个问题来自数据库-jeffery ullman的全集(练习13.4.1 a

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

它是否简单到:

i) 偶数奇偶校验:1的数目是5(奇数),因此只需附加1,答案是:001110111

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

或:


我是不是走错了路?我在网上查了一下,但找不到任何具体的东西。此外,教科书中上述问题的文本不清楚。

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

00111011

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

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

您也可以使用异或,即; 00111011


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

奇偶校验的替代实现:

这涉及到在整数中特定数字的连续位之间进行异或运算

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

使用“1”初始化奇偶校验变量以进行奇偶校验计算添加有关为什么这是问题答案的更多信息。
unsigned char CalEvenParity(unsigned char data)
{
unsigned char parity=0;

while(data){
        parity^=(data &1);
        data>>=1;
            }
return (parity);
}
def parity_val(x):
    parity=0
    while x>>1:
     parity =  (x & 1)^ ((x >>1) & 1)
     x = x>> 1
    return parity