整数 Package 类

kkbh8khc  于 2021-07-12  发布在  Java
关注(0)|答案(2)|浏览(303)

这个问题在这里已经有了答案

理解缩小原语转换(1个答案)
昨天关门了。
整数 Package 类

Integer obj = new Integer("1000");

System.out.println(obj.byteValue( )); //-24

我无法理解这个输出是如何形成的。我想了解整数中的“1000”是如何转换成字节中的“-24”的。我想知道这背后的逻辑。

bmvo0sr5

bmvo0sr51#

将整数转换为字节将得到整数的最后8位。
十进制为1000->二进制为11111 01000
将其转换为字节值得到11101000,即-24。

8dtrkrch

8dtrkrch2#

医生说:
在缩小原语转换后,以字节形式返回此整数的值。
如果你不知道“缩小原语转换”是什么的话,这并不是特别有用。好吧,您可以查看java语言规范(第5.1.3节)中的定义:
有符号整数到整数类型t的窄化转换只会丢弃除n个最低阶位以外的所有位,其中n是用于表示类型t的位数。
这个 Integer 1000由32位表示:

00000000 00000000 00000011 11101000
``` `byte` 是8位,所以我们丢弃除8个最低阶位之外的所有位,我们得到:

11101000

在8位2的补码二进制中是-24-24 = -128 + 64 + 32 + 8

相关问题