格雷碼( Gray Code,GreyCode,又稱作葛萊碼,二進(jìn)制循環(huán)碼) 是1880 年由法國工程師Jean - Maurice - Emlle Baudot 發(fā)明的一種編碼,因Frank Gray 于1953 年申請專利"Pulse CodeCommunicatiON"而得名。當(dāng)初是為了機(jī)械應(yīng)用,后來在電報(bào)上取得了巨大發(fā)展,現(xiàn)在則常用于模擬- 數(shù)字轉(zhuǎn)換和轉(zhuǎn)角- 數(shù)字轉(zhuǎn)換中。
1 格雷碼( Gray Code) 的由來
無容置疑,迄今為止對典型格雷碼( Primary GrayCode) 的權(quán)威描述是Frank Gray的美國專利"PULSECode Communication[8]".該專利申請于1947 年11 月13 日,申請?zhí)枮?85697; 1953 年3 月17 日獲得批準(zhǔn),專利號為2632058,專利權(quán)歸貝爾電話實(shí)驗(yàn)室所有。
根據(jù)所用編碼的鏡像反射特性,專利將其稱之為反射二進(jìn)制碼( Reflected Binary Code) .專利還介紹了幾種變形格雷碼( Gray Code Variants)。
筆者所見最早使用術(shù)語"Gray Code"的文獻(xiàn)是Earl Albert Ragland 等人在1953 年10 月16 日申請、1958 年2 月11 日獲得批準(zhǔn)的2823345 # 美國專利"Direction - Sensitive Binary Code Position Control System[9]".據(jù)此,Gray code 出現(xiàn)在1953 年10 月16 日之前在邏輯上是可能的。另一篇使用Gray Code 的文獻(xiàn)是Jack Breckman 在1953 年10 月31 日申請、1956 年1 月31 日獲得批準(zhǔn)的2733432 # 美國專利"EncodingCircuit".考慮到專利公開時(shí)的修訂問題,GrayCode 的出現(xiàn)應(yīng)不晚于1956 年1 月。
2 格雷碼的特點(diǎn)和應(yīng)用
典型的二進(jìn)制格雷碼( Binary Gray Code) 和部分其他數(shù)碼如表1 所示。
表1 典型二進(jìn)制格雷碼和其他部分?jǐn)?shù)碼
典型格雷碼是具有反射特性和循環(huán)特性的單步二進(jìn)制自補(bǔ)碼( Reflected Cyclic Binary Unit - diSTanceSelf - complementing Code) .與自然二進(jìn)制碼( NaturalBinary Code) 相比,它的誤碼率較低,是一種錯誤最小化的可靠性編碼,又稱為最小差錯〔二進(jìn)制〕碼( Minimum Error [binary]Code) ,經(jīng)常用在數(shù)字通信和自動化測控系統(tǒng)中,使用在格雷碼計(jì)數(shù)器中還可以大大降低計(jì)數(shù)器的動態(tài)功耗。格雷碼還與PDC( Position - to - Digital Converter) 、TDC、ADC、DAC、真值表、卡諾圖、哈密頓圖、九連環(huán)、漢諾塔、十六進(jìn)制難題( Hexadecimal Puzzle) 、回形滑行難題或瘋像跳舞( Spinout Puzzle or Crazy Elephant Dance) 等數(shù)字測控、數(shù)理邏輯和人工智能問題有著密切關(guān)系。利用格雷碼的奇偶性和± 1 規(guī)律等數(shù)學(xué)性質(zhì),可以方便地設(shè)計(jì)出可級聯(lián)、可預(yù)置、可逆計(jì)數(shù)的三可格雷碼計(jì)數(shù)器,也方便了九連環(huán)的套解和漢諾塔的搬移。
3 幾個(gè)錯誤說法
盡管有很多專家學(xué)者對格雷碼的研究和發(fā)展做出了巨大貢獻(xiàn),但難免也會出現(xiàn)一些不太準(zhǔn)確的說法。
現(xiàn)歸納如下:
( 1) 將Gray Code 說成無權(quán)碼。
在Gray 的專利中可知其權(quán)的絕對值為2n - 1,其符號按照1 出現(xiàn)的次序從高到低正負(fù)交替??赡苁且?yàn)闊o數(shù)學(xué)推導(dǎo),且在專利中有3 處誤寫為2n - 1 而不符合實(shí)際情況( 在Robert L. Carbrey于1948 年2 月10 日申請、1951 年1 月16 日獲得批準(zhǔn)的2538615#專利中寫法都是正確的) ,致使很多數(shù)字電子技術(shù)和計(jì)算機(jī)技術(shù)的文獻(xiàn)認(rèn)為格雷碼是無權(quán)碼,僅互動百科稱其為準(zhǔn)權(quán)碼,汪蔚霄給出了與Gray 類似的權(quán)值,J. F. A. Thompson 認(rèn)為可以從格雷碼直接轉(zhuǎn)換成十進(jìn)制數(shù)[22].
( 2) 將Gray code 寫成Grey Code或Gray Code.
美語gray 等同于英語grey 是"灰色"的意思,且Gray 和Grey 的人名音譯均為格雷,因而造成錯用。但Gray Code 因Frank Gray 命名,絕不能寫成Grey Code;可寫為Gray code,但不能寫成gray code.
( 3) 將Gray Code 譯為灰色碼
可能由于Gray 有灰色的含意,且Gray Code 的權(quán)值不如自然二進(jìn)制數(shù)的權(quán)值明顯,故有人誤認(rèn)為此碼為"灰色碼".
( 4) 認(rèn)為Gray Code 的發(fā)明者是mile Baudot
1878 年,根據(jù)右撇子手指的巧拙區(qū)別,法國工程師Jean - Maurice - ?mlle Baudot 曾在電報(bào)編碼中使用了一種后來擴(kuò)展為一號國際電報(bào)碼ITA1 的波特碼( Baudot Code,又稱作五單位博多碼)。雖然波特碼基本是按法文元音、輔音的順序以變形格雷碼排序的,可以看作格雷碼的一個(gè)子集,但沒必要將Gray code 的發(fā)明也歸于?mile Baudot.順便指出,盡管波特率與Baudot 有關(guān),但電路、信號與系統(tǒng)和電子技術(shù)中說的波特圖則是W. H. Bode 發(fā)明的,其英文是Bode diagram,建議按照自動控制領(lǐng)域譯成伯德圖為好。
同樣早于Gray,George Stibitz 在1941 年11 月26日申請、1943 年1 月12 日獲得批準(zhǔn)的2307868#美國專利"Binary Counter"設(shè)計(jì)了一種8 元格雷碼計(jì)數(shù)器,給出了5 元格雷碼計(jì)數(shù)器從0 開始計(jì)數(shù)16 次的狀態(tài)表。此碼表與典型格雷碼完全一致,但沒有人說格雷碼是George Stibitz 發(fā)明的。
( 5) 認(rèn)為Gray Code 的發(fā)明者是Elisha Gray
雖然與貝爾競爭電話專利權(quán)的Elisha Gray 在電報(bào)技術(shù)和電話技術(shù)中都做出了重要貢獻(xiàn),但他與GrayCode 無關(guān)。
( 6) 認(rèn)為Gray Code 的發(fā)明者是中國人
如同萊布尼茲重新發(fā)現(xiàn)并完善推廣的二進(jìn)制數(shù)可以解釋邵雍改畫的伏羲八卦圖[28]只是巧合一樣,格雷碼與九連環(huán)可能是恰巧同構(gòu)。在沒有確鑿證據(jù)之前,雖然九連環(huán)的套解符合格雷碼的± 1 規(guī)律,但沒有必要把格雷碼的發(fā)明歸功于九連環(huán)的中國發(fā)明者,也沒必要將格雷碼稱為九連環(huán)碼,漢諾塔亦然。
4 幾個(gè)易混稱呼
( 1) 將Gray Code 稱為循環(huán)碼或循環(huán)碼的特例
由于格雷碼的頭尾兩數(shù)也具有單位距離的特性,故格雷碼又稱為循環(huán)二進(jìn)制單位距離碼( Cyclic BinaryUnit - distance Code) ,循環(huán)二進(jìn)制碼( Cyclic BinaryCode[1]) ,也稱為循環(huán)置換碼( Cyclic PermutationCode) ,有時(shí)簡稱為循環(huán)碼。
由于將格雷碼稱為循環(huán)碼容易與計(jì)算機(jī)糾錯編碼中使用的循環(huán)碼混淆,建議不要再直接用循環(huán)碼稱呼格雷碼。
( 2) 將Gray Code 譯為葛萊碼或格萊碼、戈萊碼。
早期,有人將Gray Code 音譯為葛萊碼或格萊碼、戈萊碼,目前在我國的核工業(yè)和專利文件中仍有葛萊碼計(jì)數(shù)器之說。但由于Marcel J. E. Golay發(fā)明的一種糾錯用循環(huán)碼Golay Code[31]的音譯也是格萊碼或戈萊碼,與葛萊碼同音。故為免混淆,建議不要再將格雷碼譯為葛萊碼或格萊碼、戈萊碼。
當(dāng)然,將Golay Code 音譯為格雷碼或戈雷碼也是不合適的。
( 3) 將Gray Code 稱為反射二進(jìn)制碼。
除了格雷碼因具有反射特性而稱為反射二進(jìn)制碼外,還有一種用于PCM - 24B 方式脈沖編碼調(diào)制( Pulse Code Modulation,PCM) 的反射二進(jìn)制碼。這種碼型以自然二進(jìn)制碼從中間折疊,又稱為反卷碼或折疊二進(jìn)制碼( Folded Binary Code); 其有符號數(shù)向下順移一半,與原碼表示有符號數(shù)的反碼相同。對于小振幅成分產(chǎn)生頻率高的話音信號來說,具有易于同步的優(yōu)點(diǎn)。為免兩種編碼的混淆,建議都不要再使用反射二進(jìn)制碼的名字。
5 結(jié)束語
格雷碼( Gray Code) 曾用過Grey Code、葛萊碼、格萊碼、戈萊碼、循環(huán)碼、反射二進(jìn)制碼、最小差錯碼等名字,它們有的不對,有的易與其他名稱混淆,建議不再使用這些曾用名。
(審核編輯: 智匯胡妮)
分享