java强制转换byte类型超出范围是怎么计算的?
为什呢126+4要求原码300就不用转原码了呢?已解决⑴如果补码的符号位为“0”,表示是一个正数,其原码就是补码。00101100即时补码也是原码...
为什呢126+4要求原码300就不用转原码了呢?
已解决
⑴如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
00101100即时补码也是原码 展开
已解决
⑴如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
00101100即时补码也是原码 展开
4个回答
展开全部
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吗?
+0...00000100(int型4)
=0...10000010(int型130)
即int型数130转换成byte型后(转换方式是截取int型数的第一字节),刚好是-126的补码( 10000010)。
再看300
0...0100101100(int型300),截取第一字节是 00101100不就是44吗?
追答
int类型的值转换成byte,就是截取出值的第一字节。
追问
我把正数的补码也是原码搞忘了
展开全部
byte是一个字节,所以300的高位字节会丢失,剩下00101100=44
130=128+2 128用10000000表示,高位(这里表示第八位)是1所以为负数 所以是-128+2=-126
130=128+2 128用10000000表示,高位(这里表示第八位)是1所以为负数 所以是-128+2=-126
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
超出范围了,java byte的范围是[-128,127]。想表示130的话使用int就好了。为什么一定要用byte呢
追答
其实 byre和int 又有啥区别呢
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
计算机是按补码来的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询