概述
今天数字逻辑的老师竟然要求我们下来用代码实现格雷码和二进制码的互相转换,还要发到他的邮箱里= =,真是有够闲的
代码如下:
#include<stdio.h>
#define maxsize 1000
char 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("转换出的典型格雷码是:%sn", 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';
else
return '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
*/
最后
以上就是酷酷烧鹅为你收集整理的格雷码和二进制码的互相转换代码如下:的全部内容,希望文章能够帮你解决格雷码和二进制码的互相转换代码如下:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复