java强制转换byte类型超出范围是怎么计算的?

为什呢126+4要求原码300就不用转原码了呢?
已解决
⑴如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
00101100即时补码也是原码

0.....01111110( int型126)
+0...00000100(int型4)
=0...10000010(int型130)
即int型数130转换成byte型后(转换方式是截取int型数的第一字节),刚好是-126的补码( 10000010)。

再看300
0...0100101100(int型300),截取第一字节是 00101100不就是44吗?追答

int类型的值转换成byte,就是截取出值的第一字节。

追问

我把正数的补码也是原码搞忘了

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-12-07
byte是一个字节,所以300的高位字节会丢失,剩下00101100=44
130=128+2 128用10000000表示,高位(这里表示第八位)是1所以为负数 所以是-128+2=-126
第2个回答  2018-12-06
超出范围了,java byte的范围是[-128,127]。想表示130的话使用int就好了。为什么一定要用byte呢追答

其实 byre和int 又有啥区别呢

本回答被网友采纳
第3个回答  2018-12-07
计算机是按补码来的
相似回答