二進(jìn)制轉(zhuǎn)格雷碼 格雷碼轉(zhuǎn)二進(jìn)制 十進(jìn)制轉(zhuǎn)二進(jìn)制 二進(jìn)制轉(zhuǎn)十進(jìn)制等,在Delphi xe2下通過(guò)測(cè)試。格雷碼(英文:Gray Code, Grey Code,又稱作葛萊碼,二進(jìn)制循環(huán)碼)是1880年由法國(guó)工程師Jean-Maurice-Emlle Baudot發(fā)明的一種編碼[,因Frank Gray于1953年申請(qǐng)專利“Pulse Code Communication”得名。當(dāng)初是為了機(jī)械應(yīng)用,后來(lái)在電報(bào)上取得了巨大發(fā)展.壓縮包里含該源代碼.
二進(jìn)制和格雷碼轉(zhuǎn)換:
最佳答案:
十進(jìn)制 586 = 二進(jìn)制 1001001010 = 格雷碼 1101101111。
二進(jìn)制碼 ----> 格雷碼(編碼):
從最右邊一位起,依次將每一位與左邊一位異或(XOR),作為對(duì)應(yīng)格雷碼該位的值,最左邊一位不變(相當(dāng)于左邊是0)。
格雷碼的是特點(diǎn)是:
相鄰兩數(shù)的格雷碼,僅僅有一位二進(jìn)制發(fā)生變化。
而且在其范圍內(nèi)的最小值和最大值,也僅僅有一位二進(jìn)制發(fā)生變化。
例如下面兩數(shù):
最。憾M(jìn)制0000=格雷碼0000
最大:二進(jìn)制1111=格雷碼1000
看到了吧,0000 和 1000,僅僅有一位數(shù)發(fā)生變化。
-------
如果在變換的過(guò)程中,先把十進(jìn)制轉(zhuǎn)換成BCD碼,這就失去了格雷碼的特點(diǎn)。
因?yàn)樵贐CD碼中:
最。憾M(jìn)制0000=格雷碼0000
最大:二進(jìn)制1001=格雷碼1101
可以看出,它們之間有三位發(fā)生變化。
通過(guò)BCD碼來(lái)變換格雷碼,思路不對(duì)。變換出來(lái)的,并不是原數(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
如果是通過(guò)編程計(jì)算進(jìn)行變換,就需要使用這個(gè)公式逐位的計(jì)算;
如果是使用硬件電路進(jìn)行變換,就可以使用做而論道前面在回答問(wèn)題時(shí)給出的電路。
格雷碼轉(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