为了保证输入代码的正确性,通常会采取一些措施,从编码的角度考虑,可以采用使用自检码的方法。
自检码是在原代码的基础上附加校验位。校验位的值是通过数学计算得到的,代码输入后,计算机通过对代码有关位的计算来核对校验位的值,如果不一致则查出代码有错。通过校验位可以发现抄写错误、易位错误、随机错误等。
(一)确定校验位的方法
1将代码(Ci)各位乘以权因子(Pi),求出各位的积:C1P1,C2P2,……CnPn
2求出各位积之和:S=C1P1+C2P2+…+CnPn
3以称为模的常数(M)除和,求出余数(R)即R=mod(S,M)。
4把余数R作为校验位。
权因子的选取:通常以提高出错发现率为基础,常见的有:
几何级数,如1,2,4,8,16,32,……
算术级数,如1,2,3,4,5,6,7,……
质数,如1,3,5,7,11,13,17,……
模的选取:可取10,11,13等(www.xing528.com)
(二)代码校验位的求法
例如,设代码为1 2 3 4 5,求其校验位值。
解:取权 2,4,8,16,32
取模11
则:原代码 1 2 3 4 5
权因子 32 16 8 4 2
乘积和 32+32+24+16+10=114
114/11=10……4
因此,其校验位为:4
带校验位的代码(新代码)为123454(把余数作为校验位)
当代码12345输入为13245时,求出其校验位值是1,显然与4不一致,所以说明有错。至于准确性要求很高的代码,可以考虑增加校验位的位数。当余数为10、11、12、13时,其校验位码为A、B、C、D,(模为11时,余数为10时按0处理);而对于字母编码要使用校验位检查,计算时要将A—Z转换为10—35。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。