如果是一个 byte 的数据,也就是 8 个 bit ,假定一个 bit 的出错概率是 p 。那么我浪费一点数据空间,肯定是做到检验的效果。
一个 bit 拿来检验,肯定是能 parity check 了。ABCDEFG(H),最后一个 bit 的 0/1 状态给前面的数据补足,形成偶数个 1 或者奇数个 1 。这个缺点就是无法检验偶数个错误的情况。 求这种情况下,检验出错误发生的概率。
两个 bit 拿来检验,土方法自然是 1 对 3 ,每 4 个 bit 形成一个组合进行 parity check ,比如 ABCDEF(GH)。数学比较差,直觉就是算出 4 个 bit 组合的检验成功的概率,然后做个 1-p(miss)xp(miss)计算。对于 4 个 bit 的概率,我手动枚举相加好像比 7+1 的情况简单很多。两个检验 bit 的位置似乎不影响概率,但是实际应用上有讲究吗?比如 ABC(D)EFG(H)会不会更好?
最后还有个问题,想求问 2 个 bit 还有更好的方法吗? CRC 算法复杂一点,但是好像因为 bit 太少,性能不太能提升。
一算概率就糊涂,过来请教一下,谢谢。