我是靠谱客的博主 酷酷烧鹅,最近开发中收集的这篇文章主要介绍格雷码和二进制码的互相转换代码如下:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天数字逻辑的老师竟然要求我们下来用代码实现格雷码和二进制码的互相转换,还要发到他的邮箱里= =,真是有够闲的

代码如下:

#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

*/

最后

以上就是酷酷烧鹅为你收集整理的格雷码和二进制码的互相转换代码如下:的全部内容,希望文章能够帮你解决格雷码和二进制码的互相转换代码如下:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部