leetcode——【格雷码】

题目

格雷码和二进制转换实现

思路

格雷码到二进制
在这里插入图片描述

二进制到格雷码
在这里插入图片描述

实现

格雷码到二进制

    //根据二进制格雷码转换成自然二进制码的法则,可以得到以下的三种代码方式: 
      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;
      }

二进制到格雷码

    //根据二进制转换成格雷码的法则,可以得到以下的代码:
      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位将溢出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值