在信息编码中,两个合法代码对应位上编码不同的位数称为码距,又称海明距离。举例如下:10101和00110从第一位开始依次有第一位、第四、第五位不同,则海明距离为3。
几何意义:
n位的码字可以用n维空间的超立方体的一个顶点来表示。两个码字之间的海明距离就是超立方体两个顶点之间的一条边,而且是这两个顶点之间的最短距离。
作用:
用于编码的检错和纠错
为了检测d个错误,需要一个海明距离为d+1的编码方案。因为在这样的编码方案中,d个1位错误不可能将一个有效码字改编成另一个有效码字(至少需要d+1位才能将一个有效码转换为另一个有效码,因为海明距离为d+1)。当接收方看到一个无效码字的时候,它就知道已经发生了传输错误。类似地,为了纠正d个错误,需要一个距离为2d+1的编码方案,因为在这样的编码方案中,合法码字之间的距离足够远,因而即使发生了d位变化,则还是原来的码字离它最近,(离原来的码字距离为d位,离其他码字距离为d+1),从而可以唯一确定原来的码字,达到纠错的目的。
计算方法:
计算海明距离的一种方法,就是对两个位串进行异或(xor)运算,并计算出异或运算结果中1的个数。例如110和011这两个位串,对它们进行异或运算,其结果是:
110⊕011=101
异或结果中含有两个1,因此110和011之间的海明距离就等于2。
CAN中的用途:
CAN提供海明距离6(CAN网络的理论值)。这表示可检测到五个随机分布的位错误。
此外,可检测到最多15位的突发性错误。CAN不提供位校正机制。