由於課本上對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...