我有以下代码:
int i =128;
byte b = (byte) i;
System.out.println( Integer.toBinaryString(i)); //10000000
System.out.println( Integer.toBinaryString(b)); //11111111111111111111111110000000
有人能解释一下为什么从整数转换为字节时要在左侧添加 1 以及一个字节如何携带超过 8 位!?
最佳答案
您正在 Integer 类上调用 .toBinaryString
,因此您的号码在任何情况下都会被视为 Integer。
第二次调用之所以有这么多1,是因为它是负数。在 Java 中,字节是有符号的,因此最大正值是 127。通过将 128 转换为字节,您实际上代表的是 -128。当您像之前那样将那个小负数转换为 32 位有符号整数时,所有这些 1 都会出现在开头。
关于java - 在 Java 中将整数转换为字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33249757/