这个问题在这里已经有了答案:
理解缩小原语转换(1个答案)昨天关门了。整数 Package 类
Integer obj = new Integer("1000"); System.out.println(obj.byteValue( )); //-24
我无法理解这个输出是如何形成的。我想了解整数中的“1000”是如何转换成字节中的“-24”的。我想知道这背后的逻辑。
bmvo0sr51#
将整数转换为字节将得到整数的最后8位。十进制为1000->二进制为11111 01000将其转换为字节值得到11101000,即-24。
8dtrkrch2#
医生说:在缩小原语转换后,以字节形式返回此整数的值。如果你不知道“缩小原语转换”是什么的话,这并不是特别有用。好吧,您可以查看java语言规范(第5.1.3节)中的定义:有符号整数到整数类型t的窄化转换只会丢弃除n个最低阶位以外的所有位,其中n是用于表示类型t的位数。这个 Integer 1000由32位表示:
Integer
00000000 00000000 00000011 11101000 ``` `byte` 是8位,所以我们丢弃除8个最低阶位之外的所有位,我们得到:
11101000
在8位2的补码二进制中是-24-24 = -128 + 64 + 32 + 8
2条答案
按热度按时间bmvo0sr51#
将整数转换为字节将得到整数的最后8位。
十进制为1000->二进制为11111 01000
将其转换为字节值得到11101000,即-24。
8dtrkrch2#
医生说:
在缩小原语转换后,以字节形式返回此整数的值。
如果你不知道“缩小原语转换”是什么的话,这并不是特别有用。好吧,您可以查看java语言规范(第5.1.3节)中的定义:
有符号整数到整数类型t的窄化转换只会丢弃除n个最低阶位以外的所有位,其中n是用于表示类型t的位数。
这个
Integer
1000由32位表示:11101000