是80
十进制128 = 二进制 1001001010 = 格雷码 1101101111.二进制码-格雷码(编码):从最右边一位起,依次将每一位与左边一位异或(XOR)。
作为对应格雷码该位的值,最左边一位不变(相当于左边是0).格雷码的是特点是:相邻两数的格雷码,仅仅有一位二进在一组数的编码中
若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code)。
十进制 586 = 二进制 1001001010 = 格雷码 1101101111。
二进制码-格雷码(编码):
从最右边一位起,依次将每一位与左边一位异或(XOR),作为对应格雷码该位的值,
最左边一位不变(相当于左边是0).
格雷码的是特点是:
相邻两数的格雷码,仅仅有一位二进制发生变化。
而且在其范围内的最小值和最大值,也仅仅有一位二进制发生变化。
例如下面两数:
最小:二进制0000=格雷码0000
最大:二进制1111=格雷码1000
----
楼上在变换的过程中,插入了BCD码,这就失去了格雷码的特点。
在BCD码中:
最小:二进制0000=格雷码0000
最大:二进制1001=格雷码1101
可以看出,它们之间有三位发生变化。
通过BCD码来变换格雷码,思路不对。变换出来的,并不是原数的格雷码。
你在网上查一下,有现成的公式.在plc内数据都是用二进制表示的.大致如下:二进制的第7位=格雷码的第7位二进制的第6位=格雷码的第7位异或格雷码的第6位....二进制的第0位=格雷码的第1位异或格雷码的第0位比如格雷码为01101100,则对应的二进制为第7位=0第6位=0xor1=1第5位=1xor1=0第4位=1xor0=1第3位=0xor1=0第2位=1xor1=0第1位=1xor0=1第0位=0xor0=0二进制值=01010010=十进制的82
方法:
先转成十六进制;
再转成格雷码;
采用除基取余法
95/16,商5,余15,即十六进制数F
5/16,商0,余5
从上到下依次是个位、十位
所以,最终结果为(5F)16。
采用除基取余法
61/16,商3,余13,即十六进制数D
3/16,商0,余3
从上到下依次是个位、十位
所以,最终结果为(3D)16。
查表转换:
(95)10=(5F)16=(0111 1000)GR
(61)10=(3D)16=(0010 1011)GR