格雷码与二进制码之间的相互转换
文章目录
- 什么是格雷码?
- 二进制码转换成格雷码
- 格雷码转换成二进制码
什么是格雷码?
格雷码,又叫循环二进制码或反射二进制码,格雷码是我们在工程中常会遇到的一种编码方式,它的基本特点就是任意两个相邻的代码只有一位二进制数不同。
常用的二进制数与格雷码间的转换关系如下表:
十进制码 | 二进制码 | 格雷码 | 十进制码 | 二进制码 | 格雷码 |
---|---|---|---|---|---|
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;
}
格雷码与二进制码之间的相互转换相关推荐
- [Verilog]格雷码与二进制码的相互转换
格雷码与二进制码的相互转换 摘要:在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即"首尾相 ...
- 格雷码与二进制码的相互转换 (python代码实现)
⭐ What? 格雷码 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即"首尾相连&quo ...
- 数字电路基础知识——格雷码和二进制码的转换的算法和Verilog实现
数字电路基础知识--格雷码和二进制码的转换的算法和Verilog实现 关于数字电路中的码制问题在这篇博客中已经做了详细分析, 数字电路基础知识--数字IC中的进制问题(原码,反码,补码以及各进制的转换 ...
- 进制之间的快速转换法:8421码及原码反码补码之间的相互转换关系
进制之间的快速转换法: 十进制和二进制的指尖的快速转换法: 8421码,是BCD码的一种 二进制数据中的每个位上的1,都代表一个固定的数值,将固定的数值相加即可! 二进制: 1 1 1 1 1 1 1 ...
- 格雷码与二进制码转换
格雷码转二进制码 二进制码转格雷码 代码如下 //gray to bin module gray2bin #(parameter ADDR_WIDTH=8)(input [ADDR_WIDTH-1:0 ...
- 【数字电路基础】格雷码、二进制码与格雷码的转换、独热码
文章目录 一. 格雷码 二.二进制码与格雷码的转换 2.1.二进制码转格雷码(编码) 2.2.格雷码转二进制码(解码) 三.代码实现 3.1.`b2g.v`(**二进制码转格雷码**) 3.2.`g2 ...
- 格雷码、二进制码、BCD编码
格雷码 格雷码(12页).pdf 格雷码(12页).pdf-其它文档类资源-CSDN下载 奇偶校验码(25页).pdf 奇偶校验码(25页).pdf-其它文档类资源-CSDN下载 经验:如何快速地写出 ...
- 状态机与独热码、格雷码、二进制码
状态机 简称FSM,也叫同步有限状态机 同步:同步的意思就是在系统时钟的作用下 有限:有限代表状态机中的状态是有限的 根据影响输出分为两大类,一为Moore.二为Mealy Moore:若最后的输出只 ...
- 20211025-BCD码和十进制之间的相互转换
1,函数功能:十进制数转换为BCD码 思路:(1)将十进制数 24拆分成 2 和 4 (2)将2 和 4 组合成0x24 代码: static unsigend int num_1_bcd(unsig ...
- 格雷码基础和生成的几种方法
1 格雷码: 1.1 格雷码引言: 在数字系统中,常要求代码按一定顺序变化. 在机器视觉里面,编码结构光也是按照一定的顺序进行变化,最常用的就是Binary,但是,二进制的纯粹的编码,由于二进制的进制 ...
最新文章
- vue中一个组件导入另一个组件
- centos下搭建nginx+tomcat实现集群负载与session复制
- Java NIO:Buffer、Channel 和 Selector
- keep-alive使用_如何使用Google Keep进行无忧笔记
- CAS自旋锁到底是什么?为什么能实现线程安全?
- 【Golang 接口自动化05】使用yml管理自动化用例
- Linux 发行版本简介 (zz)
- BZOJ3123[Sdoi2013]森林——主席树+LCA+启发式合并
- Ubuntu之更新CMake的版本
- 软件测试-缺陷报告(自己看)
- HAProxy的安装和部署
- linux实现防止恶意扫描 PortSentry
- 思科模拟器之工大瑞普版(u7)下载地址
- Excel中怎么自动调整行高列宽
- Docker Are you trying to connect to a TLS-enabled daemon without TLS?
- 双十一健身运动装备有哪些值得买?运动好物推荐分享
- oracle里面asm的作用,Oracle ASM 详解
- 网上最全的系统服务,让PF降到50以下(转)
- Python常见库matplotlib之多个子图绘图
- 各种加工方法下的粗糙度范围
热门文章
- 大芒果 mysql 断开_大芒果3.3.5进入显示 与服务器断开连接
- 基于FPGA的QAM调制
- 个人记账系统c语言,C#实现_______个人记账程序
- 可以使用C#语言的在线ACM题库
- 数字0123456789对应的ASCII码值
- IIR滤波器设计基础及Matlab设计示例
- Tcl 语言 ——列表篇
- 计算机硬盘序列号是空白,为什么小弟我的获取硬盘序列号的代码,在有些电脑下没法获取到硬盘序列号,即返回值为空白...
- axure原型素材模板-手机端蓝色科幻科技动态酷炫游戏大数据手机H5页面模板素材聊天
- Trnsys模块Type14hfunction editor界面打不开