格雷碼
在一組數(shù)的編碼中,若任意兩個相鄰的代碼只有一位二進(jìn)制數(shù)不同,則稱這種編碼為格雷碼(Gray Code),另外由于最大數(shù)與最小數(shù)之間也僅一位數(shù)不同,即“首尾相連”,因此又稱循環(huán)碼或反射碼。在數(shù)字系統(tǒng)中,常要求代碼按一定順序變化。例如,按自然數(shù)遞增計數(shù),若采用8421碼,則數(shù)0111變到1000時四位均要變化,而在實際電路中,4位的變化不可能絕對同時發(fā)生,則計數(shù)中可能出現(xiàn)短暫的其它代碼(1100、1111等)。在特定情況下可能導(dǎo)致電路狀態(tài)錯誤或輸入錯誤。使用格雷碼可以避免這種錯誤。格雷碼有多種編碼形式。
格雷碼(Gray Code)曾用過Grey Code、葛萊碼、格萊碼、戈萊碼、循環(huán)碼、反射二進(jìn)制碼、最小差錯碼等名字,它們有的不對,有的易與其它名稱混淆,建議不要再使用這些曾用名。
二進(jìn)制
二進(jìn)制是計算技術(shù)中廣泛采用的一種數(shù)制。二進(jìn)制數(shù)據(jù)是用0和1兩個數(shù)碼來表示的數(shù)。它的基數(shù)為2,進(jìn)位規(guī)則是“逢二進(jìn)一”,借位規(guī)則是“借一當(dāng)二”,由18世紀(jì)德國數(shù)理哲學(xué)大師萊布尼茲發(fā)現(xiàn)。當(dāng)前的計算機系統(tǒng)使用的基本上是二進(jìn)制系統(tǒng),數(shù)據(jù)在計算機中主要是以補碼的形式存儲的。計算機中的二進(jìn)制則是一個非常微小的開關(guān),用“開”來表示1,“關(guān)”來表示0。
20世紀(jì)被稱作第三次科技革命的重要標(biāo)志之一的計算機的發(fā)明與應(yīng)用,因為數(shù)字計算機只能識別和處理由‘0’?!?’符號串組成的代碼。其運算模式正是二進(jìn)制。19世紀(jì)愛爾蘭邏輯學(xué)家喬治布爾對邏輯命題的思考過程轉(zhuǎn)化為對符號“0‘’?!?‘’的某種代數(shù)演算,二進(jìn)制是逢2進(jìn)位的進(jìn)位制。0、1是基本算符。因為它只使用0、1兩個數(shù)字符號,非常簡單方便,易于用電子方式實現(xiàn)。
二進(jìn)制轉(zhuǎn)格雷碼公式
十進(jìn)制 586 = 二進(jìn)制 1001001010 = 格雷碼 1101101111。
二進(jìn)制碼 ----》 格雷碼(編碼):
從最右邊一位起,依次將每一位與左邊一位異或(XOR),作為對應(yīng)格雷碼該位的值,最左邊一位不變(相當(dāng)于左邊是0)。
格雷碼的是特點是:
相鄰兩數(shù)的格雷碼,僅僅有一位二進(jìn)制發(fā)生變化。
而且在其范圍內(nèi)的最小值和最大值,也僅僅有一位二進(jìn)制發(fā)生變化。
例如下面兩數(shù):
最?。憾M(jìn)制0000=格雷碼0000
最大:二進(jìn)制1111=格雷碼1000
看到了吧,0000 和 1000,僅僅有一位數(shù)發(fā)生變化。
-------
如果在變換的過程中,先把十進(jìn)制轉(zhuǎn)換成BCD碼,這就失去了格雷碼的特點。
因為在BCD碼中:
最小:二進(jìn)制0000=格雷碼0000
最大:二進(jìn)制1001=格雷碼1101
可以看出,它們之間有三位發(fā)生變化。
通過BCD碼來變換格雷碼,思路不對。變換出來的,并不是原數(shù)的格雷碼。
自然二進(jìn)制數(shù)轉(zhuǎn)換到格雷碼
------------
設(shè)有 N 位二進(jìn)制數(shù) B(i),其中 0 《= i 《= N - 1;它可以變換成為同樣位數(shù)的格雷碼 G(i)。
二進(jìn)制數(shù)與格雷碼的轉(zhuǎn)換公式如下:
G(i) = B(i+1) XOR B(i) ; 0 《= i 《 N - 1
G(i) = B(i) ; i = N - 1
如果是通過編程計算進(jìn)行變換,就需要使用這個公式逐位的計算;
如果是使用硬件電路進(jìn)行變換,就可以使用做而論道前面在回答問題時給出的電路。
格雷碼轉(zhuǎn)換到自然二進(jìn)制數(shù)
------------
設(shè)有 N 位格雷碼 G(i),把它轉(zhuǎn)換成自然二進(jìn)制數(shù)的算法如下。
自然二進(jìn)制碼的最高位等于雷碼的最高位;
自然二進(jìn)制碼的次高位為最高位自然二進(jìn)制碼與次高位格雷碼相異或;
自然二進(jìn)制碼的其余各位與次高位自然二進(jìn)制碼的求法相類似。
轉(zhuǎn)換公式如下:
B(i) = G(i) ; i = N - 1
B(i) = B(i+1) XOR G(i) ; 0 《= i 《 N - 1
-
二進(jìn)制
+關(guān)注
關(guān)注
2文章
795瀏覽量
41701 -
格雷碼
+關(guān)注
關(guān)注
2文章
34瀏覽量
13204
發(fā)布評論請先 登錄
相關(guān)推薦
評論