System.out.println(200*300*400*500)

乐行人生 2020-03-13 10:05:08
这个 为什么最后值为-884901888,有大神能解释的通透些么
...全文
91 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
安特矮油 2020-03-14
  • 打赏
  • 举报
回复 1
首先int是32位的:0000 0000 0000 0000 0000 0000 0000 0000 第一位是符号位,也就是剩下的31位作为计数 你最后的数值结果是12000000000 => 10 11001011 01000001 01111000 00000000 红色的部分超出,会被截取掉,所以int的12000000000 ==> 1100 1011 0100 0001 0111 1000 0000 0000 我们来看看-884901888在计算机中怎么表示的, 先看884901888:===>00110100 10111110 10001000 00000000,不足需要补位 由于是负数,所以符号位是1,同时需要求补码(符号位除外):11001011 01000001 01110111 11111111,由于负数的补码还需要+1 所以最终-884901888在计算机里面的结果就是:11001011 01000001 01111000 00000000

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧