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

为什呢126+4要求原码300就不用转原码了呢?已解决⑴如果补码的符号位为“0”,表示是一个正数,其原码就是补码。00101100即时补码也是原码... 为什呢126+4要求原码300就不用转原码了呢?
已解决
⑴如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
00101100即时补码也是原码
展开
 我来答
microroom
科技发烧友

2018-12-07 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1606万
展开全部
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,就是截取出值的第一字节。
追问
我把正数的补码也是原码搞忘了
百度网友797d6d6
2018-12-07 · TA获得超过178个赞
知道答主
回答量:55
采纳率:0%
帮助的人:5.4万
展开全部
byte是一个字节,所以300的高位字节会丢失,剩下00101100=44
130=128+2 128用10000000表示,高位(这里表示第八位)是1所以为负数 所以是-128+2=-126
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无野楼升域醉0t
2018-12-06 · TA获得超过8552个赞
知道小有建树答主
回答量:1498
采纳率:88%
帮助的人:501万
展开全部
超出范围了,java byte的范围是[-128,127]。想表示130的话使用int就好了。为什么一定要用byte呢
追答
其实 byre和int 又有啥区别呢
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a242a41
2018-12-07 · 超过16用户采纳过TA的回答
知道答主
回答量:231
采纳率:24%
帮助的人:18.5万
展开全部
计算机是按补码来的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式