XOR 没有给我数字 0 或 1

XOR is not giving me the numbers 0 or 1

我当前的输入是“11”和“1” 我的变量 longer 是“11”,进位是“1”。

int carry = 1;
String longer = "11";
System.out.println(carry);  ---> 1
System.out.println(longer.charAt(1)); ---> 1
System.out.println(carry ^ longer.charAt(i)); ---> 48

为什么 carry = 1longer.charAt(i) = 1 但当我将两者异或时,我得到 48,这甚至不是二进制数?

char 1的二进制是00000000 00110001,

int 1的二进制是00000000 00000000 00000000 00000001

当你 char 1 ^ int 1 时,char 1 将通过在 00000000 00110001 的开头添加 16 个零来提升为 int,所以你实际上在做:

00000000 00000000 00000000 00110001 
^
00000000 00000000 00000000 00000001

结果是

00000000 00000000 00000000 00110000, in dicimal 48

您可以在 ^:

之前将 char 1 解析为 int 1
int carry = 1;
String longer = "11";
int longerInt = Integer.parseInt(String.valueOf(longer.charAt(1)));

System.out.println(carry ^ longer.charAt(1)); //48
System.out.println(carry ^ longerInt); // 0