0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

二进制转格雷码公式

PoisonApple 来源:网络整理 2018-03-02 14:47 次阅读

格雷码

在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(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
收藏 人收藏

    评论

    相关推荐

    什么是

    (Gray code),又叫循环二进制码或反射二进制码 在数字系统中只能识别0和1,各种数据要转换为
    发表于 11-11 09:34 7264次阅读
    什么是<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>码</b>

    二进制与自然二进制码的互换分析

    其中采用循环二进制编码的绝对式编码器,其输出信号是一种数字排序,不是权重码,每一位没有确定的大小,不能直接进行比较大小和算术运算,也不能直接转换成其他信号,要经过一次变换,变成自然二进制码
    的头像 发表于 09-23 16:23 6753次阅读

    二进制码详解

    的权为21=2,b2位的权为22=4,b3位的权为23=8,例: 0111= 0×8 + 1×4 + 1×2 + 1×1=7  一般情况下,十进制二进制码之间的关系可表示为:(N)D= b3 W3 + b2 W2 + b1
    发表于 04-06 23:55

    二进制与自然二进制码的互换

    。而绝对式编码器是直接输出数字量的传感器,它是利用自然二进制或循环二进制)方式进行光电转换的,编码的设计一般是采用自然
    发表于 03-08 14:16

    简介及格二进制的转换程序

    . * ***************************************************************** *补充说明: *其它的转换方法还有 * 1、查表法(建立一个二进制与格的对应表) *
    发表于 04-22 09:00

    二进制与格转换

    二进制与格转换
    发表于 08-08 15:51

    二进制与格转换

    本帖最后由 eehome 于 2013-1-5 10:01 编辑 二进制与格转换
    发表于 08-14 09:42

    简介及格二进制的转换程序

    简介及格二进制的转换程序
    发表于 01-16 11:52 4977次阅读

    二进制方法

    二进位码第n位 = 二进位码第(n+1)位+第n位。因为二进位码和
    发表于 11-11 09:38 7663次阅读
    <b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>码</b><b class='flag-5'>转</b><b class='flag-5'>二进制</b>方法

    和8421的相互转换

    属于可靠性编码,是一种错误最小化的编码方式。因为,虽然自然二进制码可以直接由数/模转换器转换成模拟信号,但在某些情况,例如从十进制的3
    的头像 发表于 03-02 15:23 4.7w次阅读
    <b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>码</b><b class='flag-5'>转</b>和8421<b class='flag-5'>码</b>的相互转换

    二进制的转换

    ,又叫循环二进制码或反射二进制码
    的头像 发表于 03-02 15:48 1.8w次阅读
    <b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>码</b>与<b class='flag-5'>二进制</b>的转换

    FPGA学习系列:33. 二进制二进制的设计

    ] bi;5  output reg [8:0] bo;  //8位二进制输出6  reg  [8:0] g;7  8  //二进制
    的头像 发表于 08-28 16:16 3236次阅读

    如何把二进制转换为是如何判断读空写满呢?

    在传递读写时钟域的指针使用来传递,如何把二进制转换为
    的头像 发表于 09-15 09:38 8239次阅读
    如何把<b class='flag-5'>二进制</b>转换为<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>码</b>?<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>码</b>是如何判断读空写满呢?

    转换为二进制编码器的方法

    绝对编码器中的传感器输出格序列,需要一些复杂的转换方法才能正确使用。本文展示了如何获取绝对编码器使用的并将其转换为
    的头像 发表于 05-05 15:41 6379次阅读
    将<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>码</b>转换为<b class='flag-5'>二进制</b>编码器的方法

    二进制转换

    是一种循环二进制编码,特点是相邻数变化时只有一位数据跳变。
    的头像 发表于 01-17 11:15 4921次阅读
    <b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>码</b>与<b class='flag-5'>二进制</b>转换