gray码转二进制其实并不是一个复杂的问题,但牵扯大量计算。我们不妨偷懒一下,用计算机来帮我们计算。废话不多说,直接上代码。
#include <iostream>
using namespace std;
struct NOR
{
int input1,input2;
public:
NOR(int i1,int i2):input1(i1),input2(i2){}
int output()
{
if(input1!=input2)
return 1;
else
return 0;
}
};
int main()
{
cout << "请输入要转换的GRAY码:" ;
char gray[20];
cin>>gray;
cout<<"转换后的gray码是"<<gray[0];
int tmp=gray[0]-'0';
NOR n1(0,0);
for(int i=1;gray[i]!='\0';i++)
{
n1.input1=tmp;
n1.input2=gray[i]-'0';
tmp=n1.output();
cout<<tmp;
}
return 0;
}
代码可读性还是比较强的,我就不多阐述了。另外,注意一下如果转换的gray码超过二十位,读者只要自己更改数组大小即可