查找两个二进制输入 C++ 的 xNOR 位

find the xnor bits of two binary input c++

本文关键字:C++ 输入 xNOR 二进制 两个 查找      更新时间:2023-10-16

我正在使用c ++做xnor门,我能够使用递归函数编码找到答案,但是答案位的顺序相反,因为我使用模来比较两个二进制输入,其中斩碎最后一个数字并进行比较,如果输出相等,否则输出0,我的问题是如何将答案反转为正确的顺序。int xnor(int x, int y( {//function to apply 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其他情况的返回语句。但这不是正确的解决方案。正确的方法是通常对数据进行编码,而不是复杂的二进制十进制。是的,标准流缺少二进制数据的输入/输出,但您可以使用std::bitset或将转换器从二进制字符串写入 int,反之亦然,这很简单。然后你的函数也会变得微不足道,不需要任何递归,因为二进制操作对于大多数 CPU 来说是原生的:

int xnor(int x, int y)
{
    return ~(x^y);
}

您可能希望添加第三个字符串参数(到目前为止的答案(,并且在最后一次迭代中,您希望在执行字符串之前反转字符串。您可以为第三个参数指定默认大小写为 xnor(int x, int y, string s = ""(,这样您就不必在第一次调用它时为其指定值。