java数值类型

1.java数值类图

数值类图

2.Integer类

  • Integer存储时使用的字节数
  // Bit twiddling

    /**
     * The number of bits used to represent an {@code int} value in two's
     * complement binary form.
     *
     * @since 1.5
     */
    public static final int SIZE = 32;

由java源码可以得知Integer存储时所占用的字节数为4个字节。

  • java中整数的存储方式为补码的方式存储。
    1. 正整数的补码就是原码。例如4 原码100B;补码:100B
    2. 负整数的补码为符号位不变,原码取反加一 例如:-4 原码 10000100B ;补码11111100B
    3. 依据是根据下面原码得出:
  *
     * @return an {@code int} value with a single one-bit, in the position
     *     of the lowest-order one-bit in the specified value, or zero if
     *     the specified value is itself equal to zero.
     * @since 1.5 求出一个整数的最低位字节
     */
    public static int lowestOneBit(int i) {
        // HD, Section 2-1
        return i & -i; //这里只用了&操作所以可以判断得出java存储整数的方式是补码的方式。
    }

3.Short类

  • Short类存储时占用的字节数
 /**
     * The number of bits used to represent a {@code short} value in two's
     * complement binary form.
     * @since 1.5
     */
    public static final int SIZE = 16;

由源码可以得知short占用的字节数为2个字节。

4.Byte类

  • Byte类所占用的字节数
  /**
     * The number of bits used to represent a {@code byte} value in two's
     * complement binary form.
     *
     * @since 1.5
     */
    public static final int SIZE = 8;

由源码可以得知Byte占用的字节数为1个字节。

5.Double类

  • Double类型所占用的字节数
 /**
     * The number of bits used to represent a {@code double} value.
     *
     * @since 1.5
     */
    public static final int SIZE = 64;

由源码可以得知doule类型所占用的内存的字节数为8个字节。

  • double双精度数据类型存储格式
    double类型存储由三部分组成:
    (1)符号位s站1个bit;
    (2)指数位e为11个bit;
    (3)小数位f为52位bit;
    其中还有偏移附加值为:1023
    实际指数的值 = 指数部分的值-偏移附加值
    double类型的存储格式
    例如:2.5的存储:
    (1)整数部分:2的二进制位 10B
    (2)小数部分为:0.1B
    所以整体的二进制位:10.1B;由于double类型的小数部分占52位;所以2.5在内存中小数的表示方式为f=0100000000000000000000000000000000000000000000000000B(后面50个0);大家可能会疑惑前面的1那里去了其实在java中默认的整数位为1所以干脆省略掉,提供多一位的bit给小数位从而提高精度;那么指数位为1;所以我们可以算出double类型的指数e = 1023 + 1 即10000000000B;符号位s:0B;综上所述:我们可以得到2.5在java存储的内容为0 10000000000 0100000000000000000000000000000000000000000000000000B

Float类

  • Float类型在所占用的bit数
  /**
     * The number of bits used to represent a {@code float} value.
     *
     * @since 1.5
     */
    public static final int SIZE = 32;

由此可以看出占用的字节数为:4

– Float单精度数据类型存储格式
float类型存储由三部分组成:
(1)符号位s站1个bit;
(2)指数位e为8个bit;
(3)小数位f为23位bit;
其中还有偏移附加值为:127
实际指数的值 = 指数部分的值-偏移附加值
float

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值