我正在使用 C++ 执行 xnor 门,我能够通过使用递归函数编码来找到答案,但是答案位的顺序是相反的,因为我通过使用模比较两个二进制输入,最后一位的印章并比较,如果相等则输出 1 ,否则输出 0 ,我的问题是如何将答案反转为正确的顺序。 int xnor(int x, int y) {//应用xnor的函数
if (x > 0) {
int reminder1 = x % 10;
int reminder2 = y % 10;
if (reminder1 == reminder2) {
cout<<1;
}
else {
cout<<0;
}
return xnor(x / 10, y / 10);
}
假设我输入 110001 和 101110 它将显示 000001 而不是 100000
最佳答案
修复您的函数很简单,只需将递归调用放在输出之前而不是之后。此外,对于 x > 0
的其他情况,您还缺少 return 语句。但这不是正确的解决方案。正确的一种是正常编码数据,而不是复杂的二进制十进制。是的,标准流缺少二进制数据的输入/输出,但您可以为此使用 std::bitset
或编写一个从二进制字符串到 int 的转换器,反之亦然,这很简单。然后你的函数也将变得微不足道并且不需要任何递归,因为二进制操作对于大多数 CPU 来说是 native 的:
int xnor(int x, int y)
{
return ~(x^y);
}
关于c++ - 找到两个二进制输入的xnor位c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49451538/