为什么Math.abs(Integr.MIN_VALUE)==Integer.MIN_VALUE
public class Test { public static void main(String[] args) {int a=Integer.MIN_VALUE;System.out.println(Math.abs(a));}
}
上面代码的结果是true,这跟我们希望的结果相反,为什么绝对值函数没有得到正确结果呢,我们来看下源码
public static int abs(int a) {return (a < 0) ? -a : a;}
在abs的源码中,对于负数直接使用了加上负号来取法,但是我们知道,因为存在0,int的范围是[-2^31,2^31-1],
所以最小的数-2^31加上负号对应的2^31其实超过了int对应的最大整数范围。我们再来从字节的角度分析一下,32位太长了
这里我用1字节意思一下,数字在计算机内用补码表示
127: 0111 1111
-128: 1000 0000
按照加负号的取反过程,回顾一下组原的知识,负数取反是先所有位取反(包括符号为),再+1
也就是0111 111再+1,于是有1000 0000,这样原因和过程就一目了然了
扩展:从上面的字节表示我们还可以看出Integer.MAX_VALUE+1=Integer.MIN_VALUE
为什么Math.abs(Integr.MIN_VALUE)==Integer.MIN_VALUE相关推荐
- 为什么Math.abs(Integr.MIN_VALUE)==Integer.MIN_VALUE 1
public class Test { public static void main(String[] args) {int a=Integer.MIN_VALUE;System.out.print ...
- Integer.MIN_VALUE
原文地址 说来惭愧,第一次看见种形式的整形值,以前只是知道整形有范围,还不知道是这样取到的,其他的也不清楚 这里自己记录一下,方便以后查看. 在JDK中,整形类型是有范围的,最大值为Integer.M ...
- 关于Integer.MAX_VALUE + 1 = Integer.MIN_VALUE 问题
1.负数二进制表示 由于计算机中数据都以二进制表示,而负数的二级制是根据正数二进制取补码(补码就是先取反码,然后加1)得到,如: 一个int 类型的数值为5,其长度为32位,二进制表示为 000000 ...
- Math.abs为Integer.Min_VALUE返回错误的值
Math.abs为Integer.Min_VALUE返回错误的值 这段代码: System.out.println(Math.abs(Integer.MIN_VALUE)); 回报-2147483 ...
- Java中Integer.MAX_VALUE/Integer.MIN_VALUE的含义
leetcode209中有写到 int result = Integer.MAX_VALUE,填补一下知识盲区. integer.MAX_VALUE的含义 首先,回忆一下Java中基本数据类型有哪些: ...
- 原码、反码、补码(Integer.MIN_VALUE、Integer.MAX_VALUE)
计算机以"补码"形式存储数字,通过ASCII表对应的数字存储字符,通过GBK表对应的数字存储文字. 原码: 原始二进制位,最高位是符号位.反码: (正数)反码 = 原码 (负数)反 ...
- Integer.MAX_VALUE和Integer.MIN_VALUE是什么?
在java中的基本数据类型有8种: 整数型:int, short, long, byte; 浮点型:float,double: 字符类型:char: 表示真值类型:boolean: 其中: ...
- java.lang.Integer.MAX_VALUE; 0x7FFFFFFF;0x80000000;java.lang.Integer.MIN_VALUE这是什么意思?
在Java中,一共有8种基本数据类型: 整数型:int , short , long , byte . 浮点型:float , double . 字符类型:char . 表示真值的类型:boolean ...
- java中的math.abs_java – Math.abs(a – b)的更快实现 – Math.abs(c – d)?
我有一个Java方法,它在一个非常紧凑的循环中重复计算以下表达式,并且重复次数很多: Math.abs(a - b) - Math.abs(c - d) a,b,c和d是可以跨越其整个范围的长值.它们 ...
最新文章
- 使用WinPcap和libpcap类库读写pcap文件(002)PCAP文件格式
- 计算机ui答辩,KGUT1027 班级UI设计第一阶段成长答辩开始啦
- 十月 android版本分布,安兔兔发布2018年10月份Android手机性能排行榜
- mysql 动态游标_mysql动态游标与mysql存储过程游标(示例)
- Leet Code OJ 118. Pascal's Triangle [Difficulty: Easy]
- 快手春节活动奖励未到账,被羊毛党投诉上了全国12315平台
- react 路径跳转组件不跳转_Taro 小程序开发大型实战(二):多页面跳转和 Taro UI 组件库...
- Python植物大战僵尸源代码及素材
- 使用 vlmcsd 部署 KMS 服务器
- Visual Studio Code 编辑器
- 笔记本电脑插网线显示未识别的网络_笔记本插入网线,显示未识别网络
- 孕妇睡眠质量差怎么办?如何提高睡眠质量?
- windows和linux环境下的嵌入式开发区别
- C++ day22 继承(二)基类指针数组通过虚方法实现智能的多态
- 计算机一级execl怎么学,【计算机一级 excel】大学计算机一级excle
- 构建基于词典的Lucene分析器
- 2017京东校招终结者问题
- CMOS 和CCD的区别
- php防止恶意刷新与刷票的方法
- 服务器出错的原因有哪些 原
热门文章
- boost::math模块使用拉普拉斯(与正态比较)分布的示例的测试程序
- boost::hana::infix用法的测试程序
- boost::describe模块实现连载功能的测试程序
- Boost:双图bimap与Boost xpressive的测试程序
- ITK:获取图像中标记区域的统计属性
- VTK:可视化之SideBySideViewports
- VTK:可视化之Lorenz
- Qt for QNX
- Qt Creator将纹理附加到材质
- OpenGL 分层渲染Layered Rendering的实例