Как мне представить целое число в двоичном коде, чтобы я мог сравнить с помощью XOR?

Я должен создать код, который принимает 1-6 бит двоичного кода, заполняет наиболее значимые биты 0, если строка не равна 6, и сравнивает 2 пакета по 3 бита, используя операцию XOR. Выводы странные, я думаю, это потому, что я сравниваю целое число 0, а не двоичное число 0, когда выполняю XOR, и все портится.

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;

-2

Решение

Поскольку ваш код довольно плохой, здесь более чистая версия.
Попытайтесь понять, что происходит, вместо того, чтобы просто копировать это.

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]);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]