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 = 1
和 longer.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
我当前的输入是“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 = 1
和 longer.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