格雷码与二进制之间的互换

来源:互联网 发布:godaddy域名续费 编辑:程序博客网 时间:2024/05/18 03:52
#include <stdio.h>#include <stdlib.h>/*格雷码转二进制*/int grayToBin(int n){    int size = 0;    int res[255];    int out = 0;    int flag = 0;    /*先缓存*/    while (n)    {        res[size++] = n%2;        n /= 2;    }    /*利用转换关系求出最后的结果*/    for (int i=size-1; i>=0; i--)    {        flag = res[i]^flag;        out = out*2+flag;    }    return out;}/*输入N,输出格雷码*/void grayCode(int n){    int max = (1<<n);    int gray;        for (int i=0; i<max; i++)    {        gray = i^(i>>1);        printf("二进制 %d ", grayToBin(gray));        printf("格雷码 %d\n", gray);    }}/*TEST*/int main(){    grayCode(3);    return 0;}


 

0 0
原创粉丝点击