为什么我们不能将使用异或运算找到的整数转换为字符?

use*_*887 3 c++

当我写代码

    string s="000000";
    string d="111111";
    int x=(int)s[0]&(int)d[0];
    char y= (char)x;
    cout <<y << endl;
Run Code Online (Sandbox Code Playgroud)

它工作得很好,给我的答案是 0。

但是,如果我在上面的代码中用“^”(XOR)替换“&”,则给我的输出只是空白。

为什么会发生这种情况?

笔记-

  1. 我尝试替换为(int)s[0]^(int)d[0]((int)s[0]+(int)d[0])%2但结果没有任何改变。
  2. 我试图引入另一个变量,看看是否能解决问题。但又什么都没有改变。

    string s="000000";
    string d="111111";
    int x=(int)s[0]^(int)d[0];
    int z=x;
    char y= (char)z;
    cout <<y << endl;
    
    Run Code Online (Sandbox Code Playgroud)

eer*_*ika 8

假设您的系统使用 ASCII 字符编码(或扩展 ASCII 或 UTF-8)。

在ASCII中,字符'0'用数值48(110000?)表示,'1'用数值49(110001?)表示

110000?和 110001?= 110000?代表'0'。

110000?异或 110001?= 000001?这是一个不可打印的字符,表示标题的开始。