【发布时间】:2014-10-23 04:06:26
【问题描述】:
在 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
【问题讨论】:
-
溢出了。您不能将这些数字中的任何一个存储在字节变量中。
-
假设你给他们一个不同的值。现在取一些其他的数字,并做同样的事情,依此类推。显然,您最终需要超过 256 个不同的字节,这在定义上是不可能的。
标签: java casting byte twos-complement