小王在做一些软考网工自测题时,经常遇到海明码纠错的计算题,书上的解答太麻烦了,公式太多,找了个比较典型和解答简单的,备忘。

使用海明码进行纠错,7 位码长(X7X6X5X4X3X2X1),其中4 位数据,监督关系式为:
C0= X1+ X3+ X5+ X7
C1= X2+ X3+ X6+ X7
C2= X4+ X5+ X6+ X7
如果接收的码字为1000101,那么纠正后的码字是(58) 。
(58) A.1000001 B.1000101
C.1001101 D.1010101
试题解析:
C0= X1+ X3+ X5+ X7=1+1+0+1=1 (+是异或)
C1= X2+ X3+ X6+ X7=0+1+0+1=0
C2= X4+ X5+ X6+ X7=0+0+0+1=1
C0 和C2 的计算结果不为0,表示错误的码位在C0 和C2 中出现,但在C1 中不会出现。
因此,出错的是X5,将其由0 改为1 即可。

异或(xor)是一个数学运算符。它应用于逻辑运算。异或符号为“^”。 其运算法则为a异或b=a'b或ab'(a'为非a)。   
真异或假的结果是真,假异或真的结果也是真,真异或真的结果是假,假异或假的结果是假。就是说两个值不相同,则异或结果为真。反之,为假。简单点说就是异或的两个值'相同为假,不同为真'。
编辑本段异或运算法则
1. a ^ b = b ^ a
2. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;   
3. d = a ^ b ^ c 可以推出 a = d ^ b ^ c.   
4. a ^ b ^ a = b.   
x是二进制数0101   
y是二进制数1011   
则结果为x^y=1110   

0^0=0   
0^1=1   
1^0=1   
1^1=0   
只有在两个比较的位不同时其结果是1,否则结果为0,即“相同为0,不同为1”!
 

文章如转载,请注明转载自:http://www.5iadmin.com/post/826.html