字节变量不能在Java中表示125吗?
Can't byte variable express 125 in Java?
我完全是 java 初学者,不擅长英语。所以我不知道怎么问我真正想知道的,但我努力..
在学习了一些有关使用字节的代码后,我进行了练习。但是结果不是我想的那样。。
下面是我的代码!
public static void main(String[] args){
byte n1 = -2; // 10000010
byte r1 = (byte) (~n1); // expectation: 125(01111101)
System.out.println(r1);
}
但结果是“1”..
我了解到字节可以表示-128~+127,我以为 Eclipse 会显示“125”,但它是“1”所以我想知道为什么..
感谢您关注我的问题
~x
相当于Java中的x ^ -1
,所以~n1
就是-2 ^ -1 = 1
。
正如 Eran 在评论中指出的那样,问题在于您误解了 -2
的按位表示。 -2
是 11111110
,而 1000010
实际上是 -126。
我完全是 java 初学者,不擅长英语。所以我不知道怎么问我真正想知道的,但我努力..
在学习了一些有关使用字节的代码后,我进行了练习。但是结果不是我想的那样。。 下面是我的代码!
public static void main(String[] args){
byte n1 = -2; // 10000010
byte r1 = (byte) (~n1); // expectation: 125(01111101)
System.out.println(r1);
}
但结果是“1”..
我了解到字节可以表示-128~+127,我以为 Eclipse 会显示“125”,但它是“1”所以我想知道为什么..
感谢您关注我的问题
~x
相当于Java中的x ^ -1
,所以~n1
就是-2 ^ -1 = 1
。
正如 Eran 在评论中指出的那样,问题在于您误解了 -2
的按位表示。 -2
是 11111110
,而 1000010
实际上是 -126。