格雷码如何转换成二进制?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了格雷码如何转换成二进制?相关的知识,希望对你有一定的参考价值。

这种转换我知道的,只是为什么这样转换,对此感到很神奇!怎么就知道这样就能转换了?

最左边一位依然不变依次异或,直到最低位。依次异或转换后的值就是格雷码转换 后的二进制值。

   在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。

典型的二进制格雷码(Binary Gray Code)简称格雷码,因1953年公开的弗兰克·格雷(Frank Gray,18870913-19690523)专利“Pulse Code Communication”而得名,当初是为了通信,现在则常用于模拟-数字转换和位置-数字转换中。

法国电讯工程师波特(Jean-Maurice-Émile Baudot,18450911-19030328)在1880年曾用过的波特码相当于它的一种变形。1941年George Stibitz设计的一种8元二进制机械计数器正好符合格雷码计数器的计数规律。

二进制(binary),发现者莱布尼茨,是在数学和数字电路中以2为基数的记数系统,是以2为基数代表系统的二进位制。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示。

数字电子电路中,逻辑门的实现直接应用了二进制,现代的计算机和依赖计算机的设备里都使用二进制。每个数字称为一个比特(Bit,Binary digit的缩写)。

参考技术A

格雷码如何转换成二进制?

转换成二进制???

不需要转换的。

因为,格雷码,本身,就已经是二进制了。

 

格雷码是“无权”的二进制码。

它与 8421 码,可以互相转换。

转换的算法,都是一系列的“异或运算”。

参考技术B 把十进制小数乘以2,取其积的整数部分作对应二进制小数的最高位系数k -1 再取积的纯小数部分乘以2,新得积的整数部分又作下一位的系数k -2 ,再取其积的纯小数部分继续乘2,…,直到乘积小数部分为0时停止,这时乘积的整数部分是二进制数最低位系数,每次乘积得到的整数序列就是所求的二进制小数。
这种方法每次乘以基数取其整数作系数。所以叫乘基取整法。
需要指出的是并不是所有十进制小数都能转换成有限位的二进制小数并出现乘积的小数部分0的情况,有时整个换算过程无限进行下去。
此时可以根据要求并考虑计算机字长,取定长度的位数后四舍五入
这时得到的二进制数是原十进制数的近似值。
参考技术C 楼上的回答好
仔细看看网页就知道了
参考技术D http://netcourse.cugnc.com:7310/21CN/%CA%FD%D7%D6%C2%DF%BC%AD%B5%E7%C2%B7/help/log_3112.htm本回答被提问者采纳

Verilog--二进制编码到格雷码的转换

二进制编码:bincode,格雷编码:graycode,则两者转化关系为:

graycode = (bincode>>1) ^ bincode;

即二进制编码右移一位然后与原来二进制编码异或。

 

举例说明:

二进制                    格雷
0000 >> 1 = 0000 ^ 0000 = 0000 0001 >> 1 = 0000 ^ 0001 = 0001 0010 >> 1 = 0001 ^ 0010 = 0011 0011 >> 1 = 0001 ^ 0011 = 0010

 

以上是关于格雷码如何转换成二进制?的主要内容,如果未能解决你的问题,请参考以下文章

格雷码与二进制码之间的相互转换

C++ 数学与算法系列之认识格雷码

Verilog--二进制编码到格雷码的转换

格雷码(Gray Code)与8421二进制码之间的转换算法 (LeetCode89)

systemC构建格雷码和二进制的转换

蓝桥杯单片机客观题之数电学习(深夜学习——单片机)