格雷码

来源:互联网 发布:linux iscsi服务 编辑:程序博客网 时间:2024/05/22 12:34

        格雷码(Gray code),又叫循环二进制码或反射二进制码 在数字系统中只能识别0和1,各种数据要转换为二进制代码才能进行处理,格雷码是一种无权码,采用绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。格雷码属于可靠性编码,是一种错误最小化的编码方式 。

#include <stdio.h>int isright(int);void gradcode(int);int a[1024][10];        //使得n<=10;int main(){int n,i,j,num=1;printf("请输入一个大于0小于10的整数:");scanf("%d",&n);if(isright(n)==0)   return 0;else{   for(i=0;i<n;i++)    num=num*2;   gradcode(n);   for(i=0;i<num;i++)   {    for(j=0;j<n;j++)     printf("%d",a[i][j]);    printf("\n");   }}return 0;}int isright(int n){if(n>10 || n<=0){   printf("你输入的数据不满足要求!!!");   return 0;}return 1;}void gradcode(int n){int i,j,num=1;if(n==1){   a[0][0]=0;   a[1][0]=1;}else{   gradcode(n-1);   for(i=0;i<n;i++)    num=num*2;   for(i=0;i<num/2;i++)    for(j=0;j<n-1;j++)     a[num-1-i][j]=a[i][j];   for(i=0;i<num/2;i++)    a[i][j]=0;   for(i=num/2;i<num;i++)    a[i][j]=1;}}



原创粉丝点击