如何将整数表示为二进制以便使用异或进行比较

How do I represent an integer in binary so I can compare using XOR?

本文关键字:比较 整数 表示 二进制      更新时间:2023-10-16

我必须创建一个代码,该代码需要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]);