文章目录

  • 什么是格雷码?
  • 二进制码转换成格雷码
  • 格雷码转换成二进制码

什么是格雷码?

格雷码,又叫循环二进制码或反射二进制码,格雷码是我们在工程中常会遇到的一种编码方式,它的基本特点就是任意两个相邻的代码只有一位二进制数不同。

常用的二进制数与格雷码间的转换关系如下表:

十进制码 二进制码 格雷码 十进制码 二进制码 格雷码
0 0000 0000 8 1000 1100
1 0001 0001 9 1001 1101
2 0010 0011 10 1010 1111
3 0011 0010 11 1011 1110
4 0100 0110 12 1100 1010
5 0101 0111 13 1101 1011
6 0110 0101 14 1110 1001
7 0111 0100 15 1111 1000

二进制码转换成格雷码

二进制码转换成格雷码的规则如下:

  • 保留二进制码的最高位作为格雷码的最高位。
  • 格雷码的其余位为二进制码对应位与其上一位相异或。

转换示意图如下:

代码如下:

//二进制码转格雷码
string BinaryToGray(string binary)
{string gray(binary.size(), '0');//1、保留二进制码的最高位作为格雷码的最高位gray[0] = binary[0];//2、格雷码的其余位为二进制码对应位与其上一位相异或for (size_t i = 1; i < gray.size(); i++){gray[i] = (binary[i - 1] - '0') ^ (binary[i] - '0') + '0';}return gray;
}

格雷码转换成二进制码

格雷码转换成二进制码的规则如下:

  • 保留格雷码的最高位作为二进制码的最高位。
  • 二进制码的其余位为格雷码对应位与二进制码上一位相异或。

转换示意图如下:

代码如下:

//格雷码转二进制码
string GrayToBinary(string gray)
{string binary(gray.size(), '0');//1、保留格雷码的最高位作为二进制码的最高位binary[0] = gray[0];//2、二进制码的其余位为格雷码对应位与二进制码上一位相异或for (size_t i = 1; i < gray.size(); i++){binary[i] = (binary[i - 1] - '0') ^ (gray[i] - '0') + '0';}return binary;
}

格雷码与二进制码之间的相互转换相关推荐

  1. [Verilog]格雷码与二进制码的相互转换

    格雷码与二进制码的相互转换 摘要:在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即"首尾相 ...

  2. 格雷码与二进制码的相互转换 (python代码实现)

    ⭐ What? 格雷码 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即"首尾相连&quo ...

  3. 数字电路基础知识——格雷码和二进制码的转换的算法和Verilog实现

    数字电路基础知识--格雷码和二进制码的转换的算法和Verilog实现 关于数字电路中的码制问题在这篇博客中已经做了详细分析, 数字电路基础知识--数字IC中的进制问题(原码,反码,补码以及各进制的转换 ...

  4. 进制之间的快速转换法:8421码及原码反码补码之间的相互转换关系

    进制之间的快速转换法: 十进制和二进制的指尖的快速转换法: 8421码,是BCD码的一种 二进制数据中的每个位上的1,都代表一个固定的数值,将固定的数值相加即可! 二进制: 1 1 1 1 1 1 1 ...

  5. 格雷码与二进制码转换

    格雷码转二进制码 二进制码转格雷码 代码如下 //gray to bin module gray2bin #(parameter ADDR_WIDTH=8)(input [ADDR_WIDTH-1:0 ...

  6. 【数字电路基础】格雷码、二进制码与格雷码的转换、独热码

    文章目录 一. 格雷码 二.二进制码与格雷码的转换 2.1.二进制码转格雷码(编码) 2.2.格雷码转二进制码(解码) 三.代码实现 3.1.`b2g.v`(**二进制码转格雷码**) 3.2.`g2 ...

  7. 格雷码、二进制码、BCD编码

    格雷码 格雷码(12页).pdf 格雷码(12页).pdf-其它文档类资源-CSDN下载 奇偶校验码(25页).pdf 奇偶校验码(25页).pdf-其它文档类资源-CSDN下载 经验:如何快速地写出 ...

  8. 状态机与独热码、格雷码、二进制码

    状态机 简称FSM,也叫同步有限状态机 同步:同步的意思就是在系统时钟的作用下 有限:有限代表状态机中的状态是有限的 根据影响输出分为两大类,一为Moore.二为Mealy Moore:若最后的输出只 ...

  9. 20211025-BCD码和十进制之间的相互转换

    1,函数功能:十进制数转换为BCD码 思路:(1)将十进制数 24拆分成 2 和 4 (2)将2 和 4 组合成0x24 代码: static unsigend int num_1_bcd(unsig ...

  10. 格雷码基础和生成的几种方法

    1 格雷码: 1.1 格雷码引言: 在数字系统中,常要求代码按一定顺序变化. 在机器视觉里面,编码结构光也是按照一定的顺序进行变化,最常用的就是Binary,但是,二进制的纯粹的编码,由于二进制的进制 ...

最新文章

  1. vue中一个组件导入另一个组件
  2. centos下搭建nginx+tomcat实现集群负载与session复制
  3. Java NIO:Buffer、Channel 和 Selector
  4. keep-alive使用_如何使用Google Keep进行无忧笔记
  5. CAS自旋锁到底是什么?为什么能实现线程安全?
  6. 【Golang 接口自动化05】使用yml管理自动化用例
  7. Linux 发行版本简介 (zz)
  8. BZOJ3123[Sdoi2013]森林——主席树+LCA+启发式合并
  9. Ubuntu之更新CMake的版本
  10. 软件测试-缺陷报告(自己看)
  11. HAProxy的安装和部署
  12. linux实现防止恶意扫描 PortSentry
  13. 思科模拟器之工大瑞普版(u7)下载地址
  14. Excel中怎么自动调整行高列宽
  15. Docker Are you trying to connect to a TLS-enabled daemon without TLS?
  16. 双十一健身运动装备有哪些值得买?运动好物推荐分享
  17. oracle里面asm的作用,Oracle ASM 详解
  18. 网上最全的系统服务,让PF降到50以下(转)
  19. Python常见库matplotlib之多个子图绘图
  20. 各种加工方法下的粗糙度范围

热门文章

  1. 大芒果 mysql 断开_大芒果3.3.5进入显示 与服务器断开连接
  2. 基于FPGA的QAM调制
  3. 个人记账系统c语言,C#实现_______个人记账程序
  4. 可以使用C#语言的在线ACM题库
  5. 数字0123456789对应的ASCII码值
  6. IIR滤波器设计基础及Matlab设计示例
  7. Tcl 语言 ——列表篇
  8. 计算机硬盘序列号是空白,为什么小弟我的获取硬盘序列号的代码,在有些电脑下没法获取到硬盘序列号,即返回值为空白...
  9. axure原型素材模板-手机端蓝色科幻科技动态酷炫游戏大数据手机H5页面模板素材聊天
  10. Trnsys模块Type14hfunction editor界面打不开