为什么Xor-ing两个“ char”阵列显示垃圾位

Why is xor-ing two `char` arrays showing garbage bits?

本文关键字:显示 阵列 Xor-ing 两个 char 为什么      更新时间:2023-10-16

我有两个char阵列A和B。我想在这两个数组上执行位XOR。但是输出显示垃圾值。我要去哪里?

我尝试在 char中输入输出,因为 array Aarray BASCII中包含 0 and 1。但是它不起作用。

#include<iostream>
#include<cstdlib>
using namespace std;
int main(){
    char A[4] = {0,1,1,0}; 
    char B[4] = {1,1,1,0};
    char XOR[4];
    cout<< " PRINTING "<<endl;
    for(int i =0; i<4; i++)
    {
        XOR[i] = (char)(A[i]^B[i]);
        cout<<(char)XOR[i];
    }
    cout<<endl;
}

预期输出为1000,但我得到的输出是垃圾。

char的流operation将数据视为 targue ,而不是数字。如果您想将它们打印为数字,则必须将它们施放到一个数字以进行打印:

cout<< static_cast<int>(XOR[i]);

一种解决方案是使用整数阵列使其按照您的要求工作。char是"字母"的类型,而不是数字。

这是一个可能的解决方案:

#include<iostream>
#include<cstdlib>
using namespace std;
int main(){
    int A[4] = {0,1,1,0}; 
    int B[4] = {1,1,1,0};
    int XOR[4];
    cout << " PRINTING "<< endl;
    for(int i=0; i<4; i++)
    {
        XOR[i] = A[i]^B[i];
        cout<<XOR[i];
    }
    cout<<endl;
}