HDB3碼 快速上手步驟例項

2021-09-22 19:06:13 字數 1133 閱讀 9408

由於課本上對hdb3碼的編碼方式講解的不夠詳盡,在通過查閱多本參考書後,特對hdb3碼的編碼方式總結如下:

步驟:(以下步驟針對存在四連零0000的原碼,沒有四連零的原碼編為ami碼即為hdb3碼。)

①標記原碼的第乙個「1」碼為+1(注:不再像大多數書上說的先寫ami碼),如001000011寫為00+1000011。

②檢查四連零的情況,取代變換節,將四連零編為一組,用v替代0000的最後乙個0,記為000v。

③檢查相鄰v中間非零碼的個數,如果兩個相鄰v之間有奇數個非零碼,則記為000v,若有偶數個非零碼,則記為b00v。

④對「1」「b」加符號,首先將「1」和「b」看做整體,保證這個整體按正負交替規律變化。

⑤對「v」加符號,保證v與它的前乙個非零碼的符號相同(這也是最後b00v碼段中b與v符號總是相同的原因)。

⑥整理,如有需要將b和v用1替換。寫出hdb3碼。

原理:「v」碼稱為破壞碼(violate),它的加入破壞了原先正負交替的規律。「b」碼稱為平衡碼(balance),引入b是因為當相鄰兩v之間有偶數個非零碼是「v」不滿足正負極**替的規律,加入b來平衡它。

舉例:原碼:1  0  0  0  0  0  1  1  0  0  0  0  0  0  0  0  1  0  0  0  0  1  0  0

①: +1   0  0  0  0  0  1  1  0  0  0  0  0  0  0  0  1  0  0  0  0  1  0  0

②: +1   0  0  0  v  0  1  1  0  0  0  v

0  0  0

v  1  0  0  0  v  1  0  0(注:八連零情況中兩v之間沒有非零碼,當偶數個處理。)

③: +1   0  0  0  v  0  1  1  b  0  0  v  b  0  0  v  1  0  0  0  v  1  0  0

④: +1   0  0  0  v  0 -1 +1 -b 0 0 v  +b 0  0  v  -1 0 0  0  v +1 0  0 

⑤: +1   0  0  0 +v 0 -1 +1 -b 0 0 -v +b 0 0 +v -1 0 0  0 -v +1 0  0

⑥:如有需要,將b和v用1替換,b和v只是為了表明該非零碼是由原碼中的0變換來的。

HDB3碼的編碼

1 原始碼是1時,暫時不變 2 連0不超過3個時不變,有4個或以上連0時把每4個0換為取代節,即b00v 3 確定b是0還是 1 第乙個b一般取0,若兩個取代節之間1的個數為偶,易推得後者的b一定是 1,此時b和1遵循的規則完全相同,可以直接記為1,即100v 為奇則一定是0,記為0,即000v。4...

C語言實現HDB3編碼與解碼

ami碼存在出現長的連0串的缺點,為了克服ami碼的缺點,人們設計了hdb3碼。hdb3碼的編碼規則如下 把原二進位制序列變成ami碼,檢查ami碼的連0情況,當無3個以上連0碼時,ami碼就是hdb3碼。我感覺實際應用時可以不要轉ami碼這一步 當出現4個或4個以上的連0碼時,則將每4個連0小段的...

DvaJS快速上手(3)

詳情看擴充套件預算符 簡單理解就是將傳入的number賦值給當前props的number變數,實現更新資料 此處會導致number發生更新,也就是props發生了變化,所以有監聽props的元件也會發生變化 import react,from react import from dva import...