BCC(Block Check Character/信息组校验码),因校验码是将所有数据异或得出,故俗称异或校验。具体算法是:将每一个字节的数据(一般是每两个16进制的字符)进行异或后即得到校验码。
例如:需要异或校验的16进制数据:01 A0 7C FF 02
相同数据位上的值相同则取0,反之则取1
首先从第一个8位数据开始,与第二个8位数据进行异或操作,取得结果。即示例中的01与A0进行异或操作,计算结果如下:
:::::::: 0000 0001(01)
XOR 1010 0000(A0)
结果 1010 0001(A1)
将上次的计算结果,与第三个8位数据进行异或操作,取得结果。即A1与7C进行异或操作,计算结果如下:
::::::::1010 0001(A1)
XOR 0111 1100(7C)
结果 1101 1101(DD)
继续将上次的计算结果,与第四个8位数据进行异或操作,取得结果。即ED与FF进行异或操作,计算结果如下:
::::::::1101 1101(DD)
XOR 1111 1111(FF)
结果 0010 0010(22)
继续将上次的计算结果,与第五个8位数据进行异或操作,取得结果。即22与02进行异或操作,计算结果如下:
::::::::0010 0010(22)
XOR 0000 0010(02)
结果 0010 0000(20)
由以上计算分析得出异或校验位为:20
在各种总线通信或者在其他数据信息传递过程中,为了保证数据传递的正确性和可靠性,在数据帧中常加载异或校验位。