题目描述
在数字系统中只能识别0和1,各种数据要转换为二进制代码才能进行处理,格雷码是一种无权码,采用绝对编码方式,典型格雷码是一种具有反射特性和循环 特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。格雷码属于可靠性编码,是一种错误最小 化的编码方式,因为,自然二进制码可以直接由数/模转换器转换成模拟信号,但某些情况,例如从十进制的3转换成4时二进制码的每一位都要变,使数字电路产 生很大的尖峰电流脉冲。而格雷码则没有这一缺点,它是一种数字排序系统,其中的所有相邻整数在它们的数字表示中只有一个数字不同。它在任意两个相邻的数之 间转换时,只有一个数位发生变化。它大大地减少了由一个状态到下一个状态时逻辑的混淆。另外由于最大数与最小数之间也仅一个数不同,故通常又叫雷反射码 或循环码。下表为几种自然二进制码与格雷码的对照表:
十进制数 自然二进制数 格雷码 0 0000 0000 1 0001 0001 2 0010 0011 3 0011 0010 4 0100 0110 5 0101 0111 6 0110 0101 7 0111 0100 8 1000 1100 9 1001 1101 10 1010 1111 11 1011 1110 12 1100 1010 13 1101 1011 14 1110 1001 15 1111 1000 二进制格雷码与自然二进制码的互换
1、自然二进制码转换成二进制格雷码.自然二进制码转换成二进制格雷码,其法则是保留自然二进制码的最高位作为格雷码的最高位,而次高位格雷码为二进制码的高位与次高位相异或,而格雷码其余各位与次高位的求法相类似。
2、二进制格雷码转换成自然二进制码。二进制格雷码转换成自然二进制码,其法则是保留格雷码的最高位作为自然二进制码的最高位,而次高位自然二进制码为高位自然二进制码与次高位格雷码相异或,而自然二进制码的其余各位与次高位自然二进制码的求法相类似。输入
输入一个十进制整数M
输出
输出十进制整数M对应的格雷码
样例输入
2 13样例输出
11 1011#include<stdio.h> int main() { int n; while (scanf("%d", &n) != EOF) { int a[10000]; int b[10000]; int i = 0; while (1) { a[i] = n % 2; n = n / 2; if (n == 0) { break; } i++; } int j; for (j = i; j >= 0; j--) { b[j] = a[j]; } for (j = i-1; j >= 0; j--) { if (a[j] == b[j+1]) { a[j] = 0; } else { a[j] = 1; } } for (j = i; j >= 0; j--) { if (j == 0) { printf("%d\n", a[j]); } else { printf("%d", a[j]); } } } return 0; }
SWUST OJ605: 格雷码
格雷码转换解析
最新推荐文章于 2023-05-19 15:45:41 发布
本文介绍了格雷码的基本概念及其与自然二进制码之间的转换方法,并通过一个C语言程序实例展示了如何将十进制数转换为对应的格雷码。
819

被折叠的 条评论
为什么被折叠?



