2015-10-12 12 views
-2

Мне нужно создать код, который принимает 1-6 бит двоичного кода, наполняет самые значащие биты 0, если строка уже не 6, и сравнивает 2 пакета из 3 бит с помощью операции XOR. Выводы странные, я думаю, это потому, что я сравниваю целое число 0, а не двоичное число 0 при выполнении XOR, и это бесполезно.Как представить целое число в двоичном формате, чтобы я мог сравнивать с помощью 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; 
+0

Этот код является беспорядком. Начните с более подробного описания того, что вам нужно делать. Например. действительно ли вы вводите двоичное число, например 101010, или обычное десятичное число, например 1234? – deviantfan

+0

да его просто двоичное число как вход – adamvincent

+0

И вам нужно использовать xor для сравнения и печати 0 для каждой равной цифры и 1 для каждой цифры без равенства? – deviantfan

ответ

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