`
messi_18
  • 浏览: 98970 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

你知道吗,-Long.MIN_VALUE == Long.MIN_VALUE

    博客分类:
  • java
 
阅读更多
相信吗,-Long.MIN_VALUE == Long.MIN_VALUE
不信的话,可以去Eclipse中自己敲一下。为什么呢?java中有符号整数是补码表示,最高位表示符号位,1表示负数,0表示正数。所以64位的有符号整数long所能表示的最小值(Long.MIN_VALUE)的十六进制表示为0x8000000000000000(最高位是1其余位是0)就是负的2的63次幂。最大的64位有符号整数是0x7fffffffffffffff(最高位是0其余位是1).

所以,-Long.MIN_VALUE应该是0x08000000000000000但是这已经是65位的,表示为64位时最高位的0会被丢弃。所以,还是0x8000000000000000.所以,就成了-Long.MIN_VALUE == Long.MIN_VALUE。实际上是上溢出了,超出了所能表示的最大值。

如果,看编译出来的字节码,甚至能看到编译器直接就把-Long.MIN_VALUE编译成常量-9223372036854775808L,根本没有运算的字节码产生。

最后,还有一点Math.abs(Long.MIN_VALUE)==Long.MIN_VALUE。这个是需要注意的。一个负数的绝对值不一定是正数,要考虑此时的特殊情形。
分享到:
评论

相关推荐

    2016年java基本数据类型介绍.docx

    System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE); System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE); // float System.out.println("\n基本类型:float 二进制位数:" + ...

    php.ini-development

    directive because it is not set or is mistyped, a default value will be used. ; The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one ; of the INI constants (On, Off, True, ...

    r40_tinav2.1_最终验证通过_使用CB-S来验证OV5640有横条纹fpscamera+SPI2.0成功_20171114_1443没有外层目录.7z

    framerate = get_framerate((long long)(buf.timestamp.tv_sec),(long long)(buf.timestamp.tv_usec)); if(framerate > 1.0){ cap->cap_fps = framerate; //hv_dbg("framerate: %0.2ffps\n",cap->cap_fps); } ...

    thl_r16_tinav2.0_hm1375验证通过_增加打印设备ID_20170824_1447.7z

    全志R16平台的tinav2.0系统下调通HM1375 2017/8/24 14:04 开发板:SC3817R OS:tina V2.0 1、最新的驱动程序请直接联系HiMax原厂/代理商! R:\wyb\thl_r16_tinav2.0_hm1375\lichee\linux-3.4\drivers\media\video...

    数据可视化教程、案例与项目

    data = data.drop(['Province/State', 'Lat', 'Long'], axis=1) data = data.groupby('Country/Region').sum().transpose() data.index = pd.to_datetime(data.index) # 准备用于可视化的数据集 confirmed_cases = ...

    spring_MVC源码

    16. private static final long serialVersionUID = 1L; 17. @Id 18. @Basic(optional = false) 19. @GeneratedValue(strategy = GenerationType.IDENTITY) 20. @Column(name = "id", nullable = false) 21. ...

    hm1375_tinav2.1验证通过_增加设备ID的读取显示_20170825_1333没有外层目录.7z

    2017/8/24 14:04 R:\wyb\thl_r16_tinav2.0_hm1375\lichee\linux-3.4\drivers\media\video\sunxi-vfe\device\hm1375.c 2¡¢ R:\wyb\thl_r16_tinav2.0_hm1375\lichee\linux-3.4\drivers\media\video\sunxi-vfe\...

    VB源码--自定义数字&字符串加密工具

    Dim value As Long Dim ch As Long Dim shift1 As Long Dim shift2 As Long Dim i As Integer Dim str_len As Integer str_len = Len(password) For i = 1 To str_len ' Add the next letter. ch = Asc(Mid$...

    flv.js 视频播放插件 flv.min.js

    **FLV.js 视频播放插件:FLV.min.js** 在现代的Web开发中,为用户提供流畅的视频体验是一项重要任务。FLV.js是一个开源的JavaScript库,它旨在实现HTML5网页上对FLV(Flash Video)格式视频的支持,从而帮助开发者...

    两数相除(java代码).docx

    - 特殊情况还包括当`dividend`为`Integer.MIN_VALUE`且`divisor`为-1时,因为`Integer.MIN_VALUE`不能表示为`Integer.MAX_VALUE + 1`,所以也会返回`Integer.MAX_VALUE`。 2. **符号判断**: - 首先确定结果的...

    java中long类型转换为int类型-java long转int.pdf

    这个方法也会有数据溢出的风险,但可以通过检查 `Long` 对象的 `equals(Long.MAX_VALUE)` 或 `equals(Long.MIN_VALUE)` 来判断是否可能发生溢出。例如: ```java long ll = 300000L; int ii = new Long(ll).int...

    01-java基础-基本数据类型.docx

    long min = Integer.MIN_VALUE; System.out.println(max); System.out.println(min); System.out.println("-----------------------"); System.out.println(max + 1); // 不会导致溢出 } } ``` 掌握这些基本...

    java中long类型转换为int类型

    if (longValue <= Integer.MAX_VALUE && longValue >= Integer.MIN_VALUE) { int intValue = (int) longValue; // 安全转换 } else { // 处理溢出情况 } ``` 通过这种方式,可以确保转换的正确性,但也会增加代码...

    虚拟网卡驱动源代码(原版)

    int npackets = 0, quota = min(dev->quota, *budget); struct sk_buff *skb; struct snull_priv *priv = netdev_priv(dev); struct snull_packet *pkt; while (npackets < quota && priv->rx_queue) { pkt ...

    ACE_OS::mktime函数源代码

    tmptm1 = tmptm2 + (tmptm3 = (__time64_t)tb->tm_min); /***** HERE: tmptm1 holds number of elapsed minutes *****/ /* * Calculate elapsed seconds since base date */ tmptm2 = tmptm1 * 60; tmptm...

    serialchartinstall

    换句话说,如果你设定min=-1,max=1,那数据“1”将会被描绘在图中的顶端,数据“-1”将被描绘在图中的底端,而“0”将会描绘在图的正中间。数据会从映射到图中的,height就是曲线图的高度,在开始的中可以设置(这...

    Leetcode 两数相除.kt

    LeetCode问题29要求实现两个整数的除法,但不能使用乘法、除法和...然后,使用Math.abs函数将被除数和除数转换为正数处理,以简化问题(同时也是为了处理Int.MIN_VALUE转正时的溢出问题,需要将它们转换为Long类型)。

    java基本类型[定义].pdf

    浮点类型用来表示带有小数的数值,float占据32位,按照IEEE 754标准,可以精确表示约6到7位小数,其最小正非零值是`Float.MIN_VALUE`(约1.4E-45),最大值是`Float.MAX_VALUE`(约3.4E38);double占据64位,精度更...

    Android获取sdcard 信息

    long absB = bytes == Long.MIN_VALUE ? Long.MAX_VALUE : Math.abs(bytes); int index = (int) (Math.min(absB, Long.MAX_VALUE) > 1024 ? Math.floor(Math.log(absB) / Math.log(1024)) : 0); return new ...

Global site tag (gtag.js) - Google Analytics