差錯編碼D→DR,其中R為差錯檢測與糾正比特(冗余比特/監督位)
差錯編碼並不能保證100%可靠。

差錯編碼可分為檢錯碼與糾錯碼
兩個等長字符串之間的漢明距離是兩個字符串對應位置的不同字符的個數。換句話說,它就是將一個字符串變換成另外一個字符串所需要替換的字符個數
對於檢錯碼,如果編碼集的漢明距離ds=r+1,則該差錯編碼可以檢測r位的差錯
例如,編碼集 {00,01,10,11} 的漢明距離ds=1,不能實現差錯檢測
例如,編碼集 {00
00,01
01,10
10,11
11} 的漢明距離ds=2,可以100%檢測1比特差錯。(紅色即冗余信息,此處使用了重復碼)
對於
糾錯碼,如果編碼集的漢明距離ds=2r+1,則該差錯編碼可以糾正r位的差錯,將一個無效的碼字糾正為距離最近的碼字。
例如,編碼集 {00
0000,01
0101,10
1010,11
1111} 的漢明距離ds=3,可以糾正1比特差錯,如100010糾正為10
1010。
- 奇偶校驗碼
差錯檢測最簡單的方式就是用
單個奇偶校驗位,使1的總數總是偶數
如果出現偶數個比特的差錯無法檢測出
檢測能力50%,檢測效率高
二維奇偶校驗:檢測奇數位差錯、部分偶數位差錯;糾正同一行/列的奇數位錯
- Internet校驗和(Checksum)
發送端:
將“數據”(校驗內容)划分為16位的二進制“整數”序列
求和(sum):補碼求和(最高位進位的“1”,返回最低位繼續加)
校驗和(Checksum):sum的反碼
放入分組(UDP、TCP、IP)的校驗和字段
接收端:與發送端相同算法計算,計算得到的"checksum":為16位全0(sum為16位全1)無錯;否則有錯
- 循環冗余檢測(CRC)編碼/多項式編碼
檢錯能力更強大的差錯編碼,廣泛應用於實際網絡(以太網,802.11 WiFi,ATM)
將數據比特D視為一個二進制數
選擇一個r+1位的比特模式G,稱為生成多項式
目標:選擇r位的CRC比特R,滿足
(1)<D,R>剛好可以被G
模2整除
(2)接收端檢錯:利用G除<D,R>,余式全0,無錯;否則,有錯!
(3)可以檢測所有突發長度小於r+1位差錯。

D*2^r XOR R = nG
D*2^r = nG XOR R
R=余式[D*2^r/G]
因此D*2^r + R = nG時無錯;否則有錯