码迷,mamicode.com
首页 > 编程语言 > 详细

java中Math.abs(-2147483648)的返回值应该是什么?

时间:2017-03-23 03:08:18      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:二进制   没有   总结   返回   int   意思   进制   最小值   为什么   

我觉得这是一个非常有意思的问题,Math.abs(-2147483648)的返回值应该是什么? java计算结果 为什么没有得到正数结果呢? 首先我们先看下java区分整数正负的原理。在二进制的情况下,java使用0和1来代表正和负,最高位——左面第一位为1代表负数,最高位为0就代表正数。在32位的int二进制表示里,最高位是预留出来表示正负号的。 我们知道java 32位int的值域为(-2147483648,2147483647],转换成二进制如下: 最大值为:2147483647, 二进制:01111111111111111111111111111111 最小值为:-2147483648,二进制:10000000000000000000000000000000 而二进制正负转换的方式是反码+1,反码就是正码的所有位数的0和1对换。 -2147483648的二进制正码:10000000000000000000000000000000 -2147483648的二进制反码:01111111111111111111111111111111 -2147483648的二进制反码+1:10000000000000000000000000000000 这样子二进制数字就又和原来的一样了,所以Math.abs(-2147483648) 等于-2147483648。 总结 如果计算的数字比较大,超过10亿的那种,一定要使用long长整形。比如下面的样子。 长整形求绝对值 长整形求绝对值结果

java中Math.abs(-2147483648)的返回值应该是什么?

标签:二进制   没有   总结   返回   int   意思   进制   最小值   为什么   

原文地址:http://www.cnblogs.com/codeskiller/p/6603099.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!