Java XOR没有给我数字0或1

Java XOR没有给我数字0或1,java,char,integer,bit-manipulation,xor,Java,Char,Integer,Bit Manipulation,Xor,我的当前输入为“11”和“1” 我的变量更长,表示“11”,进位表示“1” 为什么carry=1和更长。charAt(i)=1但是当我将两者异或时,我得到48,这甚至不是一个二进制数 int 1的二进制文件是00000000000000000000000000000001 当您char 1^int 1时,char 1将通过在00000000 00110001开头添加16个零而提升为int,因此您实际上在执行以下操作: 00000000 00000000 00000000 00110001 ^

我的当前输入为“11”和“1” 我的变量更长,表示“11”,进位表示“1”


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

int 1
的二进制文件是
00000000000000000000000000000001

当您
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

你明白
1
'1'
之间的区别吗?不过你是在打印int。如果需要二进制表示,则需要使用
Integer.tobinarysting
来代替。请尝试以下操作以查看错误:
System.out.println((int)“1”)对不起,carry是整数。谢谢!它起作用了。你知道为什么
System.out.println(shorter.charAt(0)^longer.charAt(0)^1==1)
即使没有解析也能工作吗?;(短字符(0)='1'和长字符(0)='1'),因为两者都是字符,
00000000 00110001
^
00000000 00110001
-->0
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