字节变量不能在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 的按位表示。 -211111110,而 1000010 实际上是 -126。