Вместо 0 и 1 высвечиваются непонятные символы

В output(ниже) в строчке encode я получаю непонятные символы. Хотя по идее должен быть результат вычисления 0110 ^ 1111. В чем проблема?

#include <bits/stdc++.h>

unsigned foo(unsigned l2, unsigned start_state2, std::string& key2) {
    uint32_t state = 0b1111111111111111111111111111111;
    uint32_t start_state{ state };
    uint32_t period{ 0 };
    uint32_t bit2 { 0 };
    do
    {
        bit2 = ((state >> 31) ^ (state >> 30) ^ (state >> 29) ^ (state >> 25) ^ state);
        key2[period] = bit2;
        //std::cout << std::bitset<1>(key2[period]) << " ";
        state = (state >> 1) | (bit2 << 31);

        std::cout << std::bitset<32>(state) << std::endl;
        period++;

    } while ((period != 15) && (start_state != state));

    std::cout << "Period: " << period << std::endl;
}

std::string encode2(std::string data, std::string& key2) {
    std::string output = data;
    for(int i=0; i < data.size(); ++i) {
        output[i] = data[i] ^ (key2[i]) /*+ '0'*/;
    }
    return output;
}

int main() {
    unsigned bit2;
    unsigned start_state2;
    unsigned l2 = start_state2;
    std::string key2 = " ";
    foo(l2, start_state2, key2);


    std::string data2 = "1111";
    std::cout << "data: " << data2 << std::endl;

    std::cout << "key:  ";
    for(int i=0; i < data2.size(); ++i) {
        key2[i] += '0';
        std::cout << std::bitset<1>(key2[i]);
    }
    std::cout << std::endl;

    std::string Encode2 = encode2(data2, key2);
    std::string decode2 = encode2(Encode2, key2);
    std::cout << "encode: " << Encode2 << std::endl;
    std::cout << "decode: " << decode2 << std::endl;
}

output:

00111111111111111111111111111111
10011111111111111111111111111111
11001111111111111111111111111111
01100111111111111111111111111111
00110011111111111111111111111111
10011001111111111111111111111111
01001100111111111111111111111111
00100110011111111111111111111111
10010011001111111111111111111111
11001001100111111111111111111111
11100100110011111111111111111111
01110010011001111111111111111111
00111001001100111111111111111111
00011100100110011111111111111111
10001110010011001111111111111111
Period: 15
data: 1111
key:  0110
encode: ├ ╓¤
decode: 1111

Ответы (0 шт):