zoukankan      html  css  js  c++  java
  • Java 整数的内存分析

    以short为例 (int long  都一样)

    short  一字节,8位 -128-127   
       //为啥最大是 127?
               //1、虽然是8位 为了区分正负数 所以第一位设定为 符号位1代表负数 0代表正数
               //2、所以0111_1111时byte中最大的数也就是127
                   //1)快速计算方法
                       //1000_0000 是128-1是127
                       //1000_0000-1 是:0111_1111 所以它是最大的数 127
                       //    这也是为啥最最大值总是用2^n-1
               //3、那么以此类推 1111_1111就是最小的数?
                   //显然不对  因为整数计算机中是用补码(反码的每一位 加 1 )的形式存放得;
                   //正数的反码和补码都是它本身
                   //负数的反码是:符号位不变其余位取反 补码:反码加1
                         //例如  -1:
                        //原码:1000_0001
                        //补码:1111_1111(它才是内存中的-1)
          //那么为啥最小数是 -128呢
                  //对于11111111其补码就是10000001=-1,依次类推11111110补码为10000010=-2....
                  //一直到10000001补码为11111111=-127,接下来最大的负数为10000000十进制其实是-0
                  //在补码中只有一个 0 ,即 0000 0000,+0;
                 //而 -0 ,1000 0000 在补码中规定用来表示 -128
                 //也就是补码中的一种 数码结合 形式,符号位也表示数值位。

    有不足请指出

  • 相关阅读:
    go语言】Goroutines 并发模式
    Mysql Innodb 引擎优化 参数(innodb_buffer_pool_size)
    多key业务,数据库水平切分架构一次搞定
    Goroutine是如何工作的?
    PHP进程之信号捕捉中的declare(ticks=1)
    php多进程总结
    mysql强制性操作
    rabbitMQ高可用
    服务器TIME_WAIT和CLOSE_WAIT详解和解决办法
    mysql在innodb索引下b+树的高度问题。
  • 原文地址:https://www.cnblogs.com/blog-tian/p/14085151.html
Copyright © 2011-2022 走看看