汉明码是一组纠错码,可用于检测和纠正数据从发送方移动或存储到接收方时可能发生的错误。它是由 RW Hamming 开发的用于纠错的技术。
冗余位 –
冗余位是额外的二进制位,它们生成并添加到数据传输的信息承载位中,以确保在数据传输期间没有位丢失。
可以使用以下公式计算冗余位数:
2^r ≥ m + r + 1
其中,r = 冗余位,m = 数据位
假设数据位数为 7,则冗余位数可以计算为:
= 2^4 ≥ 7 + 4 + 1
因此,冗余位数= 4
奇偶校验位 -
奇偶校验位是附加到二进制位数据的位,以确保数据中 1 的总数是偶数或奇数。奇偶校验位用于错误检测。有两种类型的奇偶校验位:
偶校验位:
在偶校验的情况下,对于给定的一组位,计算 1 的数量。如果该计数为奇数,则奇偶校验位值设置为 1,使出现 1 的总计数为偶数。如果给定的一组位中 1 的总数已经是偶数,则奇偶校验位的值为 0。
奇校验位——
在奇校验的情况下,对于给定的一组位,计算 1 的数量。如果该计数为偶数,则奇偶校验位值设置为 1,从而使出现 1 的总计数为奇数。如果给定的一组位中 1 的总数已经是奇数,则奇偶校验位的值为 0。
汉明码的通用算法——
汉明码只是使用额外的奇偶校验位来识别错误。
以二进制形式(1、10、11、100 等)写入从 1 开始的位位置。
所有 2 的幂的位位置都标记为奇偶校验位(1、2、4、8 等)。
所有其他位位置都标记为数据位。
每个数据位都包含在一组唯一的奇偶校验位中,由其二进制形式的位位置确定。
一种。奇偶校验位 1 涵盖其二进制表示在最低有效
位置(1、3、5、7、9、11 等)中包含 1 的所有位位置。
湾。奇偶校验位 2 涵盖其二进制表示在从
最低有效位(2、3、6、7、10、11 等)起的第二个位置中包含 1 的所有位位置。
C。奇偶校验位 4 涵盖所有位位置,其二进制表示包括从
最低有效位开始的第三个位置中的 1(4-7、12-15、20-23 等)。
d。奇偶校验位 8 涵盖其二进制表示在第四个位置中包含 1 的所有位位置
最低有效位位(8-15、24-31、40-47 等)。
e. 通常,每个奇偶校验位覆盖奇偶校验位置和位位置的按位与
非零的所有位。
因为我们检查偶校验,所以如果它检查的位置中的 1 的总数是
奇数,则将奇偶校验位设置为 1。
如果它检查的位置中的总个数是偶数,则将奇偶校验位设置为 0。
确定冗余位的位置——
这些冗余位放置在对应于 2 的幂的位置。
如上例所示:
数据位数 = 7
冗余位数 = 4
总位数 = 11
冗余位位于对应于 2-1、2、4 和 8 的幂的位置
假设要传输的数据是 1011001,那么这些位将按如下方式放置:
确定奇偶校验位——
R1 位是使用奇偶校验在其二进制表示在最低有效位置包括 1 的所有位位置计算的。
R1:位 1、3、5、7、9、11
为了找到冗余位 R1,我们检查偶校验。由于与 R1 对应的所有位位置中 1 的总数是偶数,因此 R1 的值(奇偶校验位的值)= 0
R2 位是使用奇偶校验在所有位位置计算的,其二进制表示在从最低有效位开始的第二个位置中包含 1。
R2:位 2、3、6、7、10、11
为了找到冗余位 R2,我们检查偶校验。由于与 R2 对应的所有位位置中 1 的总数为奇数,因此 R2 的值(奇偶校验位的值)=1
R4 位是使用奇偶校验在其二进制表示在从最低有效位的第三个位置包括 1 的所有位位置计算的。
R4:位 4、5、6、7
为了找到冗余位 R4,我们检查偶校验。由于与 R4 对应的所有位位置中 1 的总数是奇数,因此 R4 的值(奇偶校验位的值)= 1
R8 位是使用奇偶校验在其二进制表示在从最低有效位开始的第四个位置中包含 1 的所有位位置计算的。
R8:位 8,9,10,11
为了找到冗余位 R8,我们检查偶校验。由于与 R8 对应的所有位位置中 1 的总数是偶数,因此 R8 的值(奇偶校验位的值)=0。
因此,传输的数据是:
错误检测和纠正——
假设在上面的例子中,第 6 位在数据传输过程中从 0 变为 1,那么它在二进制数中给出了新的奇偶校验值:
'
这些位给出的二进制数为 0110,其十进制表示为 6。因此,位 6 包含错误。为了纠正错误,第 6 位从 1 更改为 0。
Host List
hot news