所以我想编写一个程序,将二进制值作为输入并将其转换为格雷码,反之亦然。
这是我最初写的:
#include <iostream>
using namespace std;
int main()
{
int Choice;
bool g0,g1,g2,g3,b0,b1,b2,b3;
cout<<"For Binary To Gray Code Enter 1." << endl <<"For Gray Code to Binary Enter 2." << endl;;
cin>>Choice;
if(Choice==1)
{
cout<<"Enter the Binary Bits." << endl;
cin>>b0>>b1>>b2>>b3;
cout<<"Orginal Binary Form: "<<b3 <<b2 <<b1 <<b0 << endl;
g3=b3;
g2=b3^b2;
g1=b2^b1;
g0=b1^b0;
cout<<"Converted Gray Code Form: "<<g3 <<g2 <<g1 <<g0 << endl;
}
else if(Choice==2)
{
cout<<"Enter The Gray Code Bits." << endl;
cin>>g0>>>g1>>g2>>g3;
cout<<"Original Gray Code Form: "<<g3 <<g2 <<g1 <<g0 << endl;
b3=g3;
b2=b3^g2;
b1=b2^g1;
b0=b1^g0;
cout<<"Converted Binary Form: "<<b3 <<b2 <<b1 <<b0 << endl;
}
return 0;
}
现在这适用于 4 位,但是
我想要一些东西来确定用户在运行时输入的二进制/灰色代码的大小。
我做了一些研究,发现在这种情况下使用向量,但是因为在大学里我们刚刚开始使用 C++,所以我对向量甚至数组都不熟悉。还有什么我可以用来实现它的吗?如果没有,谁能告诉我如何使用向量?
其次,我想在一行中输入没有空格。
例子:
1011
而不是1 0 1 1
或在单独的行中为每个位获取输入。现在我也意识到我将无法知道否。位提前,所以我用来实现异或运算的位公式也会改变。是否可以声明一个二进制和格雷码
bool
变量,并以某种方式对这些变量执行 XOR 操作,而不是使用更简单的语句而不是复杂的单个位?