【问题标题】:Computing Hamming code计算汉明码
【发布时间】:2011-03-22 12:28:59
【问题描述】:

我对计算汉明码有点困惑。在Wikipedia article 中写道:

奇偶校验位 1 覆盖所有位位置 具有最低有效位 设置:位 1(奇偶校验位本身),3, 5、7、9等

如何获得包含该值的位的奇偶校验?

我理解对了吗,根据上面的文章,第一个奇偶校验位应该计算为:

parity_bit_1 = parity_bit_1 xor data_1 xor data_2 xor data_4 xor data_5 xor data_7 ...

但在其他一些来源(如 joel.neely 对this question 的回答)中,据说是这样计算的:

parity_bit_1 = data_1 xor data_3 xor data_5 xor data_7 xor data_9 ...

那么,应该怎么做呢?

【问题讨论】:

    标签: parity hamming-code


    【解决方案1】:

    它的意思是:对于每一个k,下面的东西都是零:所有其索引设置了第k位的位的异或。 (您的位有索引 1,2,...,2^n-1。)

    实际数据位于索引设置了多个位的位中。

    然后您可以使用奇偶校验约束计算 2 次幂位的所需值:每个约束正好包含一个索引为 2 的幂的位,并且每个索引为 2 的幂的位出现在一个约束中。

    因此,例如,考虑 n=3 的情况。你有 2^3-1 = 7 位代码;其中 3 个是奇偶校验位,索引为 1、2、4 的位。其他索引为 3、5、6、7 的数据是您感兴趣的数据。

    您选择位 1、2、4 中的内容,以确保 bit1 XOR bit3 XOR bit5 XOR bit7 = 0 和 bit2 XOR bit3 XOR bit6 XOR bit7 = 0 和 bit4 XOR bit5 XOR bit6 XOR bit7 = 0。

    因此,例如,如果您的消息是 0110,那么您将发送 ?,?,0,?,1,1,0。首先 ?有 ?+0+1+0=0,因此必须为 1。第二个?有 ?+0+1+0=0,因此也必须为 1。第三个 ?有?+1+1+0=0,因此必须为0。所以你发送的是1100110。

    【讨论】:

      【解决方案2】:

      我认为Calculating the Hamming Code 的文章会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-05
        • 2019-04-23
        • 1970-01-01
        • 1970-01-01
        • 2016-10-31
        • 2014-09-25
        相关资源
        最近更新 更多