校验码简介

注:「计算机体系」这个类别会包含「计算机组成原理」、「计算机操作系统」和「计算机网络」三个模块的内容。


在信息传输过程中,可能会因为各种异常情况导致信息的改变。比如人为破坏修改,又或者是宇宙射线导致比特位翻转。因此在接收到信息时,我们需要对数据进行校验。

假设有一串数字 123012 需要传输,最大的为 3,我们可以用两位的二进制进行表示 01 10 11 00 01 10。如果直接传输这份数据,那么当第一个数字 01 发生异常转变成 00 时,接收方会收到 00 10 11 00 01 10,就会以为发送方传输的是 023012

形如 0110 这样的编码称为「码字」,两个码字之间的最短距离称为「码距」。

为什么要定义码字和码距呢?这是因为当码距为 1 时,一个位置的异常转变会把一个码字转化成另外一个码字,接收方就无法直接发现异常;当码距为 2 时,一个位置的异常转变会把一个码字转化成一个非码字,接收方可以发现有异常,因此具有校验功能。但此时无法纠错,因为无法判断这个非码字是哪个码字转变过来的;当码距大于等于 3 时,不但可以校验功能,还可以进行纠错。(为啥能纠错?)

奇偶校验码

有没有什么简单的办法可以检测出错误呢?我们可以通过加入一位奇校验位或偶校验位来检测,这里以偶校验位为例。

「偶校验位」的计算方法是统计每个二进制数字中的 1 的个数,如果有偶数个 1 的话,就把偶校验位设置成 0,保证总体 1 的个数为偶数个,反之则设置成 1。

也可以通过将所有数字的进行异或运算,得到的结果就是偶校验位的值。

偶校验码 = 偶校验位 + 有效信息位

因此原来的二进制位,加上偶校验位后就可以表示为:101 110 011 000 101 110

此时再次发生 101 发生异常转变成 100 时,接收方通过计算第一位的偶校验位,发现有异常,就可以要求发送方重新发送一份新的数据,以确保数据的准确性。

奇偶校验码的码距为 2 ,所以具有校验功能,无纠错功能。

其他

还有「海明校验码」和「循环冗余校验码」需要补充~

评论