如何将整数表示为二进制以便使用异或进行比较
How do I represent an integer in binary so I can compare using XOR?
我必须创建一个代码,该代码需要1-6位二进制,如果字符串不是6,则用0填充最重要的位,并使用异或操作比较2个3位的数据包。输出很奇怪,我认为这是因为我比较的是整数0,而不是二进制数0当做异或时,它搞砸了。
char binary[300];
cin >> binary;
int size = strlen(binary);
//cout << "Size: " << size << endl;
int a,b,c,d,e,f;
if(size == 1){
a = 0;
b = 0;
c = 0;
d = 0;
e = 0;
f = binary[0];
cout << a^d << b^e << c^f << endl;
return 0;
}
if(size == 2){
a = 0;
b = 0;
c = 0;
d = 0;
e = binary[0];
f = binary[1];
cout << a^d << b^e << c^f << endl;
return 0;
}
if (size == 3){
a = 0;
b = 0;
c = 0;
d = binary[0];
e = binary[1];
f = binary[2];
cout << a^d << b^e << c^f << endl;
return 0;
}
if (size == 4){
a = 0;
b = 0;
c = binary[0];
d = binary[1];
e = binary[2];
f = binary[3];
cout << a^d << b^e << c^f << endl;
return 0;
}
if (size == 5){
a = 0;
b = binary[0];
c = binary[1];
d = binary[2];
e = binary[3];
f = binary[4];
cout << a^d << b^e << c^f << endl;
return 0;
}
if (size == 6){
a = binary[0];
b = binary[1];
c = binary[2];
d = binary[3];
e = binary[4];
f = binary[5];
cout << a^d << b^e << c^f << endl;
return 0;
}
return 0;
由于你的代码很糟糕,这里有一个更清晰的版本。
试着去理解是怎么回事,而不是照搬照抄。
std::string s;
std::cin >> s;
while(s.length() < 6)
s = "0" + s;
std::cout << (bool)(s[0] ^ s[3]);
std::cout << (bool)(s[1] ^ s[4]);
std::cout << (bool)(s[2] ^ s[5]);
相关文章:
- C++模板函数,用于比较任何无符号整数和有符号整数
- 正在LLVM中检测整数比较条件
- 为什么:不同符号的整数比较只是偶尔发生?
- C++ 如何比较n个排序的整数向量以找到互元素?
- 比较C++中两个整数的最有效和最干净的方法是什么?
- 禁止指针和整数之间的比较C++
- ISO C++禁止指针和整数 [-fpermissive] [c++] 之间的比较
- Qsort() 比较结构体整数的总和
- 比较两个整数在C++中与未知 int 类型的相等性
- Qt 错误 iso c++ 禁止指针和整数之间的比较 -permissive
- 比较整数提升后的结果
- 对压缩整数进行加法、减法和比较
- 如何正确比较整数和浮点值
- 错误:ISO C++禁止在指针和整数 [-fallowive] 之间进行比较
- 有效比较整数列表与C++中给定的整数
- 拉链比较整数和指针之间
- C 有效比较整数序列(相对顺序)
- 关于在C/C++中比较整数和浮点/双精度
- 什么更贵?读取或比较整数,双精度
- 从控制台输入c++,比较整数