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

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

3天内不再提示

格雷码与二进制的转换

PoisonApple 来源:网络整理 2018-03-02 15:48 次阅读

一、什么是格雷码?

格雷码,又叫循环二进制码或反射二进制码,格雷码是我们在工程中常会遇到的一种编码方式,它的基本的特点就是任意两个相邻的代码只有一位二进制数不同,这点在下面会详细讲解到。格雷码的基本特点就是任意两个相邻的代码只有一位二进制数不同,这点很重要。常用的二进制数与格雷码间的转换关系如下表:

格雷码与二进制的转换

二、二进制格雷码与自然二进制码的互换

1、二进制码转换成二进制格雷码

二进制码转换成二进制格雷码,其法则是保留二进制码的最高位作为格雷码的最高位,而次高位格雷码为二进制码的高位与次高位相异或,而格雷码其余各位与次高位的求法相类似。

格雷码与二进制的转换

转换代码:

//根据二进制转换成格雷码的法则,可以得到以下的代码:

static unsigned int DecimaltoGray(unsigned int x)

{

return x^(x》》1);

}

//以上代码实现了unsigned int型数据到格雷码的转换,最高可转换32位自然二进制码,超出32位将溢出。

static int DecimaltoGray( int x)

{

return x^(x》》1);

}

//以上代码实现了 int型数据到格雷码的转换,最高可转换31位自然二进制码,超出31位将溢出。 12345678910111213

2、二进制格雷码转换成二进制码

二进制格雷码转换成二进制码,其法则是保留格雷码的最高位作为自然二进制码的最高位,而次高位自然二进制码为高位自然二进制码与次高位格雷码相异或,而自然二进制码的其余各位与次高位自然二进制码的求法相类似。

格雷码与二进制的转换

转换代码:

根据二进制格雷码转换成自然二进制码的法则,可以得到以下的三种代码方式:

 static unsigned int GraytoDecimal(unsigned int x)

 {

 unsigned int y = x;

 while(x》》=1)

 y ^= x;

 return y;

 }

 static unsigned int GraytoDecimal(unsigned int x)

 {

 x^=x》》16;

 x^=x》》8;

 x^=x》》4;

 x^=X》》2;

 x^=x^1;

 return x;

 }

 static unsigned int GraytoDecimal(unsigned int x)

 {

 int i;

 for(i=0;(1《《i)《sizeof(x)*8;i++)

 {

 x^=x》》(1《《i);

 }

 return x;

 }

//以上代码实现了unsigned int型数据到自然二进制码的转换,最高可转换32位格雷码,超出32位将溢出。将数据类型改为I

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 二进制
    +关注

    关注

    2

    文章

    795

    浏览量

    41650
  • 格雷码
    +关注

    关注

    2

    文章

    34

    浏览量

    13186
收藏 人收藏

    评论

    相关推荐

    什么是

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

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

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

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

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

    简介及格二进制转换程序

    简介及格二进制转换程序
    发表于 04-22 09:00

    二进制与格转换

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

    二进制与格转换

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

    简介及格二进制转换程序

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

    二进制方法

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

    二进制转换的Verilog HDL源代码

    电子发烧友网核心提示: 本例程是Verilog HDL源代码:关于基本组合逻辑功能中二进制转换的功能实现源代码。注意:程序运行在不同
    发表于 10-15 11:52 3734次阅读

    编码规则_有什么规律

    典型的二进制简称,因1953年公开的弗兰
    的头像 发表于 03-02 14:29 5.6w次阅读
    <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>有什么规律

    二进制公式

    在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环
    的头像 发表于 03-02 14:47 3.9w次阅读
    <b class='flag-5'>二进制</b>转<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>码</b>公式

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

    设计背景:典型的二进制(Binary Gray Code)简称
    的头像 发表于 08-28 16:16 3295次阅读

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

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

    转换二进制编码器的方法

    绝对编码器中的传感器输出格序列,需要一些复杂的转换方法才能正确使用。本文展示了如何获取绝对编码器使用的
    的头像 发表于 05-05 15:41 6548次阅读
    将<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>编码器的方法

    二进制转换

    是一种循环二进制编码,特点是相邻数变化时只有一位数据跳变。
    的头像 发表于 01-17 11:15 5253次阅读
    <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>