日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

汉明码的理解

發布時間:2024/10/14 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汉明码的理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.奇偶校驗

我們約定一串編碼里1的個數是偶數個,那么這串編碼里攜帶的信息就是對的,否則就是錯的。我們可以在開頭對這串編碼加一位校驗碼實現奇偶校驗。

例子:

我們想傳輸10010這串碼,那么在傳輸的時候,就傳010010,其中在開頭的0就是校驗位。
我們想傳輸10000這串碼,那么在傳輸的時候,就傳110000,其中在開頭的1就是校驗位。
兩個例子的1的個數都是偶數。

2.漢明碼

首先漢明碼是采用奇偶校驗的碼。它采用了一種非常巧妙的方式,把這串數字分了組,通過分組校驗來確定哪一位出現了錯誤。并且能對錯誤的位置進行改正

注意:

漢明碼默認一串數據只錯一位

漢明碼怎么分組:

我們看到,其實有些數據是既在P1組又在P2組的。怎么分組,這個要記住,沒啥原理了哈哈。要預先做的工作是,把表示位置的這個數,轉化成二進制數,也就是:

第1個位置,變成第0001個位置;

第2個位置,變成第0010個位置;

第3個位置,變成第0011個位置;

第4個位置,變成第0100個位置;

第5個位置,變成第0101個位置;

第6個位置,變成第0110個位置;

那么,規定來了,

凡是位置符合這種形式的,XXX1,歸到P1;

凡是位置符合這種形式的,XX1X,歸到P2;

凡是位置符合這種形式的,X1XX,歸到P3;

凡是位置符合這種形式的,1XXX,歸到P4;

那么顯然各個校驗碼也被分到各個組里面去了,而且,每個組只有一個校驗碼。

我舉個例子:

我們想傳這一組碼:XX1X101X011

一共11位。

標X的是校驗碼的位置,我們暫時不知道它的值是多少。

位置在1,3,5,7,9,11的數據進到P1組。(你轉換一下這些位置的二進制,就知道他們的位置符合XXX1)

位置在2,3,6,7,10,11的數據進到P2組。(位置符合XX1X)

位置在4,5,6,7的數據進到P3組。(位置符合X1XX)

位置在8,9,10,11的數據進到P4組。(位置符合1XXX)

那么確定了分組,校驗碼的值也就順便確定下來了。

這樣整個串的碼就確定下來了。

校驗碼的位置:

這是規定,記住它,在采用漢明碼的一串數據中,2的i次方的位置上,我們放校驗碼。

校驗碼是1,或者是0,使得校驗碼所在的組的1的個數是偶數。

如圖:

綠色的位置是放校驗碼的地方,1,2,4,8,16……等等,2的i次方的地方。

校驗碼其實是每一個分組特有的,每個分組特有的也就只有校驗碼

從發送者的角度,我該怎么發用上漢明碼的數據呢:

首先我們考慮我們到底要發多少位。假設校驗碼一共k位,我們想發的原始數據一共n位,要注意我們的校驗碼也要校驗校驗碼錯沒錯,所以,要校驗的一共有k+n位,k位校驗碼可以檢測2^k位的碼,但是不能所以,校驗碼的位數要滿足這個公式

2k>k+n2^k>k+n 2k>k+n,或者說2k?1≥k+n2^{k}-1 \geq k+n2k?1k+n

這樣我們就能算出來要用多少校驗碼了。

其實哈,實際上不用這么麻煩,教科書總是那么復雜。假設你想發101011111,那你就先占下校驗位,然后空著的位填你想發的數據就好。

占下1,2,4,8……等等位,看能占下多少位就可以,當然這個手算比較直觀啦哈。

好,我假設你填完了,然后分好組,也確定了校驗位的值了,那么發送出去啦~

我是接收者,我收到了一串漢明碼,怎樣用漢明碼的性質來檢錯呢:

1.分組,分好P1,P2,P3……

2.分別對每個組校驗,沒有錯的給它0,有錯的給1.

3.記得第一個問題,漢明碼的原理嗎?你可能會想,3個組,我們可以畫3個圈,可是100個組,這個圈可就太難畫了啊!

這里有一個等價的方法,hamming真的太聰明了。

把P從大到小排列起來,得到一串1010,

for example:

組別: P5 P4 P3 P2 P1標志: 1 0 1 0 1

從大到小排列起來,標志排成了一串一零串。這個數就是出錯的數據的位置。

本例中,10101位置上的位錯了,換成十進制是第21個位置上的數錯了。

然后,我們發現了它錯誤的位置,又因為它是二進制的,不是0就是1,所以,可以順便把它糾錯。

總結

以上是生活随笔為你收集整理的汉明码的理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。