java字节到二进制转换

时间:2014-11-13 05:04:31

标签: binary byte data-conversion

根据我在下面的陈述,我几乎没有问题。请解释一下。

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

1 个答案:

答案 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,它不是溢出。