在一組數(shù)的編碼中,若任意兩個相鄰的代碼只有一位二進(jìn)制數(shù)不同,則稱這種編碼為格雷碼。格雷碼又叫循環(huán)二進(jìn)制碼或反射二進(jìn)制碼,在數(shù)字系統(tǒng)中只能識別0和1,各種數(shù)據(jù)要轉(zhuǎn)換為二進(jìn)制代碼才能進(jìn)行處理。格雷碼是一種無權(quán)碼,采用絕對編碼方式,典型格雷碼是一種具有反射特性和循環(huán)特性的單步自補碼,它的循環(huán)、單步特性消除了隨機(jī)取數(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碼中:
最?。憾M(jìn)制0000=格雷碼0000
最大:二進(jìn)制1001=格雷碼1101
可以看出,它們之間有三位發(fā)生變化。
通過BCD碼來變換格雷碼,思路不對。變換出來的,并不是原數(shù)的格雷碼。
自然二進(jìn)制數(shù)與格雷碼的互換公式與電路
【自然二進(jìn)制數(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


































