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

    文章

    704

    浏览量

    41245
  • 格雷码
    +关注

    关注

    2

    文章

    34

    浏览量

    13090
收藏 人收藏

    评论

    相关推荐

    二进制码详解

    的权为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

    简介及格二进制转换程序

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

    什么是BCD、8421、余三

    !!余三是在8421BCD的基础上,把每个数的代码加上0011(对应十进制数3)后得到的。
    发表于 11-03 17:36

    二进制与格转换

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

    二进制与格转换

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

    的规则和应用问题?

    今天看到一个计数的程序,搜了下定义,觉得还是云里雾里,定义写的是若任意两个相邻的代码只有一位二进制数不同,则这种编码为
    发表于 08-20 14:41

    格雷码简介及格雷码与二进制转换程序

    格雷码简介及格雷码与二进制转换程序 格雷码简介  格雷码(英文:Gray Code, Grey Code,又称作葛莱码,二进制循环码)是1880年由
    发表于 01-16 11:52 4856次阅读

    二进制转换BCD码【加3移位法】

    发表于 10-17 10:43 31次下载

    进制转换V2.1

    主要是二进制转换用的,可以转换是十进制、十六进制
    发表于 10-29 09:35 0次下载

    虚拟化生态系统及实现从虚拟化走向云端

    在进入上世纪九十年代末期以后,虚拟化技术迎来了复兴。首先,由VMware基于二进制转换的全虚拟化,到Denali和Xen的修改客户端操作系统的半虚拟化,再到Intel和ADM的硬件虚拟化。至此至今,虚拟化技术进入了一个全面发展时期,包括有服务器虚拟化、存储虚拟化和网络虚拟
    的头像 发表于 09-13 10:01 3400次阅读

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

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

    二进制如何转换为十进制?

    二进制转换为十进制(base-2到base-10) )数字和背面是一个重要的概念,因为二进制编号系统构成了所有计算机和数字系统的基础。
    的头像 发表于 06-22 10:21 2.3w次阅读

    格雷码与二进制转换

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

    巧用Excel划分子网的方法

    子网划分的原理虽然理论比较简单,但是运算起来还是挺复杂的。十进制二进制转换嘛,如果没有计算机在身边确实很难算。
    的头像 发表于 03-07 09:35 1029次阅读
    巧用Excel划分子网的方法