我正在阅读有关错误检测的内容,并偶然发现了一条我不太明白的陈述。声明说“对于一个k位字符串,我们需要lg k个奇偶校验位来检测2位错误”。其中lg是登录到基数2
我不太明白为什么会这样,有没有正式的推导证实了这一点。
本书的名称是Gallahager的数据网络。
我不怀疑这本书的内容,但我只是好奇地看到了一个推导。
谢谢, 钱德尔
答案 0 :(得分:1)
查看Cyclic Redundancy Check的维基百科页面。严格来说,奇偶校验位是1位检查,所以谈论多于1个奇偶校验位可能是等效CRC的简写。文章"Mathematics of CRC"提供了有关推导的更多信息。
答案 1 :(得分:0)
当接收器重新计算奇偶校验位,并将重新计算的奇偶校验位与接收的奇偶校验位进行比较时,该差异称为校正子。当没有错误时,综合症就是零。
In other words, syndrome = recalculated_parity XOR recieved_parity.
证明需要n个奇偶校验位来检测有效载荷数据位的2 ^ n位帧中的2位错误:
当整个帧中只有1个错误时, 当接收器重新计算奇偶校验位时, 有两种情况:
如果整个画面中只有2个错误, 由此产生的综合征是由孤立的每个错误引起的综合征的异或。 当接收器重新计算奇偶校验位时,有3种情况:
假设存在一些有效载荷位,使其翻转会产生一些综合症S,
并且还有任何其他有效载荷位产生完全相同的综合症S,
那么两个错误就会触及这两个位是不可检测的。
换句话说,这个两位错误会给出S xor S == zero
的综合症。
换句话说,每个奇偶校验是情况(a)或情况(b),它们都不能检测到这样的错误。
那会很糟糕。
因此,为了检测帧中每个可能的两位错误, 我们必须设计错误检测代码 每个单比特错误必须产生不同的综合症。 换句话说,对于帧中两个错误位的每种可能情况,必须至少有一个类型(c)的奇偶校验位。
使用n个奇偶校验位给出n个校正位。 对于n个校正子位,最多可能存在2 ^ n个不同的校正子。 因此,要确保帧中的每个位(当它是唯一的错误时)给出不同的综合症, 我们必须在帧中最多有2 ^ n位。
我敢打赌,如果你在https://math.stackexchange.com/发布了这个问题,你会得到更短更优雅的证据: - )。