根据我在下面的陈述,我几乎没有问题。请解释一下。
Q1。为什么第2项和第4项的输出相同。我猜是因为字节128等于字节-128
Q2。为什么第2项和第4项的输出在左边填充1s,输出应该只有10000000.我猜。
Q3。输出2和3之间的区别是什么,即使最后的8位看起来相同。
1. System.out.println("1==>"+Integer.toBinaryString((byte)127));
2. System.out.println("2==>"+Integer.toBinaryString((byte)128));
3. System.out.println("3==>"+Integer.toBinaryString(128));
4. System.out.println("4==>"+Integer.toBinaryString((byte)-128));
1==>1111111
2==>11111111111111111111111110000000
3==>10000000
4==>11111111111111111111111110000000
答案 0 :(得分:0)
Java中的byte
实际上是带符号的8位整数。它只能表示-128到127之间的数字。
Q1。 128是溢出。它变成-128。
Q2。这两个都是负数。对于负数,the method returns "the argument plus 2^32"。这导致很多领先的1。对于正数,输出只省略前导0
。
Q3。在示例3中,您不使用byte
。您使用int
。这意味着你可以代表128,它不是溢出。