格雷码和二进制码的互相转换
今天数字逻辑的老师竟然要求我们下来用代码实现格雷码和二进制码的互相转换,还要发到他的邮箱里= =,真是有够闲的
代码如下:
#include<stdio.h>
#define maxsize 1000char my_xor (char a, char b) //异或运算
{if ((a != '1' && a != '0') || (b != '1' && b != '0')){printf("二进制码错误!\n");exit(0);}if (a != b)return '1';return '0';
}void b2g()//二进制码转换为格雷码
{char b[maxsize] = { ' ' };//表达二进制码,由1和0组成。int n = 0;//数组的大小printf("请输入二进制码的长度n:");scanf("%d", &n);getchar();printf("请输入要转换的二进制码:");for (int i = 0; i < n; i++) {scanf("%c", &b[i]);}//检查二进制码:// printf("%s", b);char G[maxsize] = { ' ' };//创建格雷码数组G[0] = b[0];for (int i = 1; i < n; i++) {G[i] = my_xor(b[i - 1], b[i]);}printf("转换出的典型格雷码是:%s\n", G);
}char opposite_xor(char b, char g) //由b[i-1]和G[i]判断b[i]并返回b[i]
{if ((g != '1' && g != '0') || (b != '1' && b != '0')){printf("二进制码错误!\n");exit(0);}if (g == '1'){if (b == '1')return '0';elsereturn '1';}else if (g == '0'){if (b == '1')return '1';else return '0';}return '0';
}
void g2b()//格雷码转二进制码
{char b[maxsize] = { ' ' };//表达二进制码,由1和0组成。char G[maxsize] = { ' ' };//创建格雷码数组int n = 0;//数组的大小printf("请输入格雷码的长度n:");scanf("%d", &n);getchar();printf("请输入要转换的格雷码:");for (int i = 0; i < n; i++) {scanf("%c", &G[i]);}//检查二进制码:// printf("%s", b);b[0] = G[0];for (int i = 1; i < n; i++) {b[i] = opposite_xor(b[i-1], G[i]);}printf("转换出的二进制码是:%s", b);
}
int main()
{b2g();//二进制码转换为格雷码g2b();//格雷码转换为二进制码return 0;
}//b2g测试案列
/*
输入:
4
0001
输出:
0001输入:
4
0101
输出:
0111输入:
4
1010
输出:
1111*///g2b测试案列
/*
输入:
4
0001
输出:
0001输入:
4
0111
输出:
0101输入:
4
1111
输出:
1010*/
格雷码和二进制码的互相转换相关推荐
- 数字电路基础知识——格雷码和二进制码的转换的算法和Verilog实现
数字电路基础知识--格雷码和二进制码的转换的算法和Verilog实现 关于数字电路中的码制问题在这篇博客中已经做了详细分析, 数字电路基础知识--数字IC中的进制问题(原码,反码,补码以及各进制的转换 ...
- 【数字电路基础】格雷码、二进制码与格雷码的转换、独热码
文章目录 一. 格雷码 二.二进制码与格雷码的转换 2.1.二进制码转格雷码(编码) 2.2.格雷码转二进制码(解码) 三.代码实现 3.1.`b2g.v`(**二进制码转格雷码**) 3.2.`g2 ...
- 格雷码与二进制码转换
格雷码转二进制码 二进制码转格雷码 代码如下 //gray to bin module gray2bin #(parameter ADDR_WIDTH=8)(input [ADDR_WIDTH-1:0 ...
- 格雷码与二进制码的相互转换 (python代码实现)
⭐ What? 格雷码 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即"首尾相连&quo ...
- [Verilog]格雷码与二进制码的相互转换
格雷码与二进制码的相互转换 摘要:在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即"首尾相 ...
- 格雷码、二进制码、BCD编码
格雷码 格雷码(12页).pdf 格雷码(12页).pdf-其它文档类资源-CSDN下载 奇偶校验码(25页).pdf 奇偶校验码(25页).pdf-其它文档类资源-CSDN下载 经验:如何快速地写出 ...
- 状态机与独热码、格雷码、二进制码
状态机 简称FSM,也叫同步有限状态机 同步:同步的意思就是在系统时钟的作用下 有限:有限代表状态机中的状态是有限的 根据影响输出分为两大类,一为Moore.二为Mealy Moore:若最后的输出只 ...
- C语言学习:二进制码与格雷码的转换
格雷码,又叫循环二进制码或反射二进制码,格雷码是我们在工程中常会遇到的一种编码方式,它的基本的特点就是任意两个相邻的代码只有一位二进制数不同. 格雷码的基本特点就是任意两个相邻的代码只有一位二进制数不 ...
- 二进制格雷码与自然二进制码之间的转换
什么是格雷码? 格雷码,又叫循环二进制码或反射二进制码,格雷码是我们在工程中常会遇到的一种编码方式,它的基本的特点就是任意两个相邻的代码只有一位二进制数不同. 二进制格雷码与自然二进制码的互换 1.二 ...
- 二进制与格雷码之间的转换的Verilog实现(更多一点的讨论)
目录 前言 二进制码转换为格雷码的方法 格雷码转换为二进制码的过程 更多一点讨论之generate for 更多一点讨论之for 最后对格雷码的介绍 前言 以前的博客也有写这方面的内容,只是没有显式的 ...
最新文章
- 第十五届全国大学智能汽车提问回答问题 2020-8-9
- 【前端_js】JavaScript知识点总结
- ADAS关键技术剖析、应用现状以及发展趋势
- 结对开发——环形一维数组求最大子数组和
- python自动发微信-python实现微信每日一句自动发送给喜欢的人
- Android--Facebook Login without LoginButton
- android 事务管理软件,安卓 Android基于安卓移动终端的个人事务管理系统
- java 修改ini文件_Java读取和修改ini配置文件
- C#图解教程读书笔记(第3章 类型、存储及变量)
- imagenet2012数据集
- C/C++ 高质量编程--内存,二重指针,指针的高级使用解析 3
- 苹果电脑上好用的几款数据备份工具
- a12处理器怎么样_苹果新一代iPhone A12仿生处理器怎么样
- java程序员平均工资多少,详细说明
- 开源Golang rtmp服务lalserver支持多种鉴权防盗链方式
- 【JS提升】六边形的两种画法
- 着色Shading(1)(光照、着色)(笔记)
- linux下获取按键响应事件(转)
- 数据库学习之(5)详解DBMS
- 系统思考正反馈之马太效应