Sri*_*osh 0 java type-conversion
我试图将int转换为byte.
int i = 128;
byte b = (byte) i;
Run Code Online (Sandbox Code Playgroud)
我知道-128到127的字节范围以及将整数存储到一个字节的规则是:
byte_value = int_vale%byte_Range; (我发现在完整参考Java中)
当我将它应用于int 128时,它应该是这样的:
byte_value = 128%256 = 128;
但是,它实际上是:-128
我无法理解这背后的实际逻辑.请帮忙!!
铸造byte并不意味着int_value % byte_range.这意味着只有最后8位有效位保留在该byte值中.起初,这似乎意味着相同的事情,但bytes签署.
的int值128是以下位:
00000000 00000000 00000000 10000000
Run Code Online (Sandbox Code Playgroud)
保留最后8位时,结果如下:
10000000
Run Code Online (Sandbox Code Playgroud)
现在,它中最重要的位byte被解释为-128,而不是+128 int.
该值128溢出a byte,结果为负,因为设置了最高有效位.
| 归档时间: |
|
| 查看次数: |
1495 次 |
| 最近记录: |