1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 格雷码和二进制码的互相转换

格雷码和二进制码的互相转换

时间:2021-10-19 14:44:18

相关推荐

格雷码和二进制码的互相转换

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

代码如下:

#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测试案列/*输入:40001输出:0001输入:40101输出:0111输入:41010输出:1111*///g2b测试案列/*输入:40001输出:0001输入:40111输出:0101输入:41111输出:1010*/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。