必威体育Betway必威体育官网
当前位置:首页 > IT技术

格雷码与二进制的转换

时间:2019-06-10 21:44:11来源:IT技术作者:seo实验室小编阅读:60次「手机版」
 

格雷码

一、什么是格雷码

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

常用的二进制数与格雷码间的转换

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

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位将溢出。       
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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位将溢出。将数据类型改为int型即可实现31位格雷码转换。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

相关阅读

二进制文件比较工具bindiff/diaphora初体验

bindiff下载(独立工具+IDA插件) macOS https://dl.google.com/dl/zynamics/BinDiff4.3.dmg Windows https://dl.google.com/

二进制中原码,反码和补码是什么?

请原谅我的不用心的截图,但因为原文章在百度文库中,下载复制是需要开通会员的,所以我就飞快的截起了图 。附上原文章的地址 https:/

计算机基础进制转换(二进制、八进制、十进制、十六进制

作者:戴翔电子邮箱:[email protected]简介:中华人民共和国公民,中国共青团员,CSDN博客专家,秦淮区疾控中心托管社会公益组织指南针

注册表中字符串值、二进制值、DWORD值区别介绍

注册表字符串值、二进制值、DWORD值是什么意思?刚编辑的上一篇关于注册表的内容中,竟然把这些内容忘掉了,实在是不该。好在现在想起

分享到:

栏目导航

推荐阅读

热门阅读