格雷码
在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。在数字系统中,常要求代码按一定顺序变化。例如,按自然数递增计数,若采用8421码,则数0111变到1000时四位均要变化,而在实际电路中,4位的变化不可能绝对同时发生,则计数中可能出现短暂的其它代码(1100、1111等)。在特定情况下可能导致电路状态错误或输入错误。使用格雷码可以避免这种错误。格雷码有多种编码形式。
格雷码(Gray Code)曾用过Grey Code、葛莱码、格莱码、戈莱码、循环码、反射二进制码、最小差错码等名字,它们有的不对,有的易与其它名称混淆,建议不要再使用这些曾用名。
二进制
二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。
20世纪被称作第三次科技革命的重要标志之一的计算机的发明与应用,因为数字计算机只能识别和处理由‘0’。‘1’符号串组成的代码。其运算模式正是二进制。19世纪爱尔兰逻辑学家乔治布尔对逻辑命题的思考过程转化为对符号“0‘’。‘’1‘’的某种代数演算,二进制是逢2进位的进位制。0、1是基本算符。因为它只使用0、1两个数字符号,非常简单方便,易于用电子方式实现。
二进制转格雷码公式
十进制 586 = 二进制 1001001010 = 格雷码 1101101111。
二进制码 ----》 格雷码(编码):
从最右边一位起,依次将每一位与左边一位异或(XOR),作为对应格雷码该位的值,最左边一位不变(相当于左边是0)。
格雷码的是特点是:
相邻两数的格雷码,仅仅有一位二进制发生变化。
而且在其范围内的最小值和最大值,也仅仅有一位二进制发生变化。
例如下面两数:
最小:二进制0000=格雷码0000
最大:二进制1111=格雷码1000
看到了吧,0000 和 1000,仅仅有一位数发生变化。
-------
如果在变换的过程中,先把十进制转换成BCD码,这就失去了格雷码的特点。
因为在BCD码中:
最小:二进制0000=格雷码0000
最大:二进制1001=格雷码1101
可以看出,它们之间有三位发生变化。
通过BCD码来变换格雷码,思路不对。变换出来的,并不是原数的格雷码。
自然二进制数转换到格雷码
------------
设有 N 位二进制数 B(i),其中 0 《= i 《= N - 1;它可以变换成为同样位数的格雷码 G(i)。
二进制数与格雷码的转换公式如下:
G(i) = B(i+1) XOR B(i) ; 0 《= i 《 N - 1
G(i) = B(i) ; i = N - 1
如果是通过编程计算进行变换,就需要使用这个公式逐位的计算;
如果是使用硬件电路进行变换,就可以使用做而论道前面在回答问题时给出的电路。
格雷码转换到自然二进制数
------------
设有 N 位格雷码 G(i),把它转换成自然二进制数的算法如下。
自然二进制码的最高位等于雷码的最高位;
自然二进制码的次高位为最高位自然二进制码与次高位格雷码相异或;
自然二进制码的其余各位与次高位自然二进制码的求法相类似。
转换公式如下:
B(i) = G(i) ; i = N - 1
B(i) = B(i+1) XOR G(i) ; 0 《= i 《 N - 1
-
二进制
+关注
关注
2文章
772浏览量
41549 -
格雷码
+关注
关注
2文章
34浏览量
13164
发布评论请先 登录
相关推荐
评论