某机器中码字长15位(包括信息位和海明校验位),采用了可纠正一位错的海明校验。识码字位从左到右用b1, b2…b15编号,其海明校验方程式为 b1?b3?b5?b7?b9?b11?b13?b15=0 b2?b3?b6?b7?b10?b11?b14?b15=0 b4?b5?b6?b7?b12?b13?b14?b15 =0 b8?b9?b10?b11?b12?b13?b4?b15=0 若在选项中给出的码字最多只有一位错,那么第2位b2错的码字为 (29) ;无错的码字为 (30) 。
单选题
A.010100101111110 B.000100101101010 C. 010111011101010 D.011011101101010
单选题
A.101111010110111 B.001111010001000 C.001111010000111 D. 001011010011100 有以下C程序: char fun (char x, char y) { if(x)return y; main( ) { int a ='9', b ='8', c ='7'; printf("% c/n", fun(fun(a,b), fun(b,c)));
【正确答案】
C
【答案解析】 [解析] 从题中给出的海明校验的方程式可知: 若码字无错,则将其相应位代入4个校验方程式的左边,计算后应有尽有全为“0”; 若只是一位错,仔细观察校验方程式的构成可见,b1只出现在第1个校验方程中,因而会使其值由“0”变为“1”,而其余3个方程的值仍为“0”,若将4个校验方程的值由下至上排列为0001,正好是二进制值1,同样,b2只出现在第2个校验方程中;若只有b2值,则4个校验方程的值由下至上排列后为0010,正好是十进制值2。这可得到bi(i=0,2,…,15)一位错,代入校验方程左边求值,并由下至上排列后正好是i的二进制值。 以问题(1)中A选项为例,计算校验方程的左边的值: b1=0, b2=0, b3=0, b4=1, b5=0, b6=0, b7=1, b8=0, b9=1, b10=1, b11=0, b12=1, b13=0, b14=1, b15=0, 分别代入4个校验方程的左边得到: 0?0?0?1?1?0?0?0=0 0?0?0?1?1?0?1?0=1 1?0?0?1?1?0?1?0=0 0?1?1?0?1?0?1?0=0 计算第(29)题各项: A.“010100101100010”(1100)2 =12,第12位b12错。 B.“000100101101010”(0010)2 =2,故第2位b2错。对于其他供选择的答案可进行类似的计算得到4个校验方程左边的值。 C.“010100111101010”(1000)2 =8,第8位b8错。 D.“010101101101010”(0110)2 =6,第6位b6错。 计算第(30)题各项: A.“101111010000111”(0001)2 =1,第1位b1错。 B.“001111010001111”(1100)2 =12,第12位b12错。 C.“001111010000111”(0000)2 =0,无错。 D.“001011010000111”(0100)2 =4,第4位错b4。
提交答案
关闭