美文网首页
Java中Long 最大值+1最小值-1问题

Java中Long 最大值+1最小值-1问题

作者: 氢电公敌 | 来源:发表于2016-03-19 22:02 被阅读2356次

    废话不都说,先上代码

        String max = Long.MAX_VALUE + "";
        String maxPlus = (Long.MAX_VALUE + 1) + "";
    
        Printer.println("" + max + " --> max");
        Printer.println("" + maxPlus + " --> max plus");
        Printer.println(Long.parseLong(maxPlus) + " --> long parse");
    

    运行结果是:

    9223372036854775807 --> max
    -9223372036854775808 --> max plus
    -9223372036854775808 --> long parse

    这。。??最大值加了1之后瞬间变最小值?就是这么神奇,堪称魔术。
    下面就来一步一步揭开魔术的神奇面纱(其实也就是反码 补码 XD)

    Long 的最大值
    十进制为:9223372036854775807
    十六进制为:0x7fffffffffffffff
    二进制为:01111111 11111111 11111111 11111111(首位为符号位,0为正,1为负)

    ok,二进制有了,咱们来+1试试
    01111111 11111111 11111111 11111111 + 0001 =
    10000000 00000000 00000000 00000000
    将此结果转换成10进制就是:-9223372036854775808

    啰嗦了这么多,不知道有没有说清楚,有同学会问了,说好的最小值-1问题呢?难道你是那种万恶的标题党吗?
    当然不是,最小值-1问题就留给各位机智的同学当作练手了,这里就不贴上来饿了 XD,道理是一样的

    相关文章

      网友评论

          本文标题:Java中Long 最大值+1最小值-1问题

          本文链接:https://www.haomeiwen.com/subject/qtwhlttx.html