gpt4 book ai didi

java - 为什么 (byte) 400000 和 (byte) -400000 结果都是 -128

转载 作者:行者123 更新时间:2023-12-01 19:37:10 24 4
gpt4 key购买 nike

在 Java 中,为什么 (byte) 400000 和 (byte) -400000 的结果都是 -128?

其实我是按照https://stackoverflow.com/a/9085666/1037217的计算方法来的

案例:400000二进制:1100001101010000000修剪为 8 位数字:10000000由于最左边的数字是 1,因此 -1:01111111然后反转:10000000结果:-128

对于案例:-400000二进制:-1100001101010000000修剪为 8 位数字:10000000由于最左边的数字是 1,因此 -1:01111111然后反转:10000000结果:128

同样的方法适用于(短)40000 = -25536(短)-40000 = 25536

最佳答案

int 转换为 byte 将保留 int 数字的最后 8 位(最后一个字节)。

 400000 = 0x61a80
-400000 = 0xfff9e580

两个数字的最后 8 位相同:0x80,即 2 的补码中的 -1

例如:

System.out.println((byte)0x23403); // Prints 3 (the last 8 bits: 0x03 = 3)
System.out.println((byte)0x23483); // Prints -125 (last 8 bits: 0x83 = -125)
// (in 2's complement: 0x83 = -(128-3) = -125)

关于java - 为什么 (byte) 400000 和 (byte) -400000 结果都是 -128,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26521150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com