在Java中将整数转换为字节

时间:2015-10-21 02:04:51

标签: java binary bit-manipulation

我有以下代码:

    int i =128;
    byte b = (byte) i;
    System.out.println( Integer.toBinaryString(i)); //10000000
    System.out.println( Integer.toBinaryString(b)); //11111111111111111111111110000000

有人可以解释为什么在从Integer转换为Byte时向左添加了1,并且一个字节如何携带超过8位!?

1 个答案:

答案 0 :(得分:1)

您在Integer类上调用.toBinaryString,因此在任何情况下您的号码都被视为整数。

第二次通话有这么多1的原因是因为它是一个负数。在Java中,字节是有符号的,因此最大正值为127.通过将128转换为一个字节,实际上表示-128。当您将这个小的负数转换为32位有符号整数时,所有这些都出现在开头。