首页 > 其他分享 >二进制和格雷码转换

二进制和格雷码转换

时间:2024-11-10 15:08:15浏览次数:1  
标签:格雷 转换 二进制 unsigned int static

二进制和格雷码转换

二进制转为格雷码

转换示意图

//根据二进制转换成格雷码的法则,可以得到以下的代码:
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位将溢出。       

格雷码转换为二进制

转换示意图

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

标签:格雷,转换,二进制,unsigned,int,static
From: https://www.cnblogs.com/hnu-hua/p/18537966

相关文章

  • 开源 - Ideal库 - 常用时间转换扩展方法(二)Qv
    合集-Ideal库-Common库(2)1.开源-Ideal库-常用时间转换扩展方法(一)11-07:悠兔机场2.开源-Ideal库-常用时间转换扩展方法(二)11-09收起书接上回,我们继续来分享一些关于时间转换的常用扩展方法。01、时间转日期时间TimeOnly该方式是把TimeOnly类型转为DateTime类型,其......
  • 4-2-2.C# 数据容器 - HashSet 扩展(HashSet 集合操作、HashSet 存储对象的特性、HashSe
    HashSet概述HashSet<T>存储的元素是无序的HashSet<T>存储的元素是不可重复的HashSet<T>支持泛型,可以指定存储的元素的类型HashSet<T>不支持索引,不可以通过索引获取或修改元素HashSet<T>不是线程安全的,在多线程环境中需要谨慎使用一、HashSet集合操作1......
  • 深入理解 Java 反射与泛型:类型擦除与强制类型转换
    深入理解Java反射与泛型:类型擦除与强制类型转换在Java编程中,反射(Reflection)和泛型(Generics)是两个强大且常用的特性。反射允许我们在运行时检查和操作类、方法、字段等,而泛型则允许我们编写更加通用和类型安全的代码。然而,Java的泛型机制与类型擦除(TypeErasure)密切相关,这使......
  • 将给定的表达式树(二叉链表存储)转换为等价的中缀表达式(递归)
    3765.表达式树可以拿这题验证自己的代码对不对ps:这里不是这题的答案,参照代码思路写即可voidBtreeToe(Btree*root){ BtreeToExp(root,1);//根的高度为1 }voidBtreeToExp(Btree*root,intdep){ if(root==NULL)return;//如果是空结点返回 elseif(!root->lef......
  • WPF 集合操作进阶:提取特定字段、转换 ObservableCollection 和过滤数据
    文章目录1.引言2.从List<T>提取特定字段3.将List<T>转换为observableCollection<T>4.过滤List<T>集合5.总结6.完整示例代码1.引言在C#开发中,集合操作是非常常见的任务,特别是在数据处理和用户界面设计中。本文将介绍如何从List<T>中提取......
  • Vue3 - 详细实现将多个文件批量导出为ZIP压缩包格式并下载功能,vue3将文件批量下载打包
    前言Vue2版本,请访问这篇文章。在vue3|nuxt3项目开发中,详解实现把多个文件组合成一个ZIP压缩包格式下载到用户本地,将文件批量下载打包成zip格式并自定义压缩包命名名称,vue3批量下载文件并导出为压缩包的功能,如何将后端返回的二进制文件流打包成zip格式,支持任意文件......
  • 进制与二进制及相关转换
    阅读学习:1、图解二进制,带你揭开二进制的神秘面纱!2、一文读懂“二进制基础”及“位运算”学习视频:V1V2V3V4......
  • centos7环境下二进制编译安装ffmpeg
    yuminstallautoconfautomakebzip2cmakefreetype-develgccgcc-c++gitlibtoolmakemercurialpkgconfigzlib-develyuminstall-yautomakelibtoolautoconfgccgcc-c++makeautomakecmakeopensslopenssl-devel​​mkdir-p/usr/local/src/ffmpeg_sourcescd/u......
  • C++中类型转换static_cast
    static_cast<type> 是C++中的一种类型转换方式,用于在编译期进行静态类型转换。与C风格的强制类型转换不同,static_cast 更加安全和明确,因为它只允许特定的类型转换,避免了潜在的错误和歧义。static_cast 的用法static_cast<type>(expression) 将 expression 转换为 typ......
  • 常用电平转换方法
    (1)晶体管+上拉电阻法   就是一个双极型三极管或MOSFET,C/D极接一个上拉电阻到正电源,输入电平很灵活,输出电平大致就是正电源电平。(2)OC/OD器件+上拉电阻法   跟1)类似。适用于器件输出刚好为OC/OD的场合。(3)74xHCT系列芯片升压(3.3V→5V)   凡是......