2016-11-28 51 views
-2

在一个网络数据包报头中,当1的补码与8位字节一起使用(而不是TCP中通常使用的16位)时,是否可以检测到1位错误?1的补码 - 是否可以检测到1位或2位错误?怎么样?为什么?

可以检测到2位错误吗?

如果他们可以如何以及为什么会发生这种情况?

+0

TCP校验和使用16位字,而不是8位字节,所以这个问题是没有意义的。 –

+0

你正在寻找的词是'补充'。 – EJP

+0

我在第三年Comp科学课堂任务中得到了这个问题。虽然我在互联网上发现了一些是或否的答案,但我还没有找到任何人可以解释为什么? –

回答

1

这是1的补码与3个8位字节一起工作的方式。 (在TCP而不是16位)

10011001 
+ 01010010 
___________ 
    11101011 
+ 01011001 
___________ 
1 01000100 
      1 Wrap Around and add 9th Bit 
___________ 
    01000101 <- Sum 
___________ 
    10111010 <- 1’s Complement 

如果有,他们都将被检测到第1位的错误,但是2位错误可以被忽视。

10011000 <- last bit switched (should be 10011001) 
+ 01010011 <- last bit switched (should be 01010010) 
___________ 
    11101011 
+ 01011001 
___________ 
1 01000100 
      1 <- Wrap Around and add 9th Bit 
___________ 
    01000101 <- Sum 
___________ 
    10111010 <- 1’s Complement with 2 bit error is the same as previous answer