引用参考

https://www.cnblogs.com/chenmingjun/p/8415464.html#4291528

https://blog.csdn.net/yansmile1/article/details/70145416

  java语言中,个字节(32位)来存储。double类型占用8个字节(64位)。 从存储结构和算法上来讲,double和float是一样的,不一样的地方仅仅是float是32位的,double是64位的,所以double能存储更高的精度。

  按照IEEE制定的浮点数表示法来进行float,double运算。这种结构是一种科学计数法:用符号指数尾数来表示。指数可正可负,所以,IEEE规定,此处算出的次方必须减去127才是真正的指数。底数定为2,即把一个浮点数表示为尾数乘以2的指数次方再添上符号

下面是具体的规格:

类型 符号位 指数 尾数 长度
float 1 8 23 32
double 1 11 52 64

以float为例:

  因为指数需要减去127,所以float类型的指数可从-126到128

科学计数法:

  格式:
    SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM

    S表示浮点数正负

    E表示指数加上127的值后得到的二进制数据

    M表示尾数,最高位固定为1

  举例

    17.625在内存中的存储为:

    首先要把17.625换算成二进制:10001.101。

    整数部分:除以2,直到商为0,余数反转。(即:模2取余法)

       17 % 2 = 8  ---> 1    低位

        8 % 2 = 4  ---> 0

        4 % 2 = 2  ---> 0

        2 % 2 = 1  ---> 0

        1 % 2 = 0  ---> 1   高位

小数部分:乘以2,直到乘位为0,进位顺序取。(即:乘2取整法)

      按如下算法进行:

        1)首先给小数部分乘2,得到的数,如果小数点前为1;则计1,为0,则计0。

        2)再对剩下的小数部分乘2,再计出1或0。

        3)重复以上步骤,直至达到需要的精度。

      0.625 x 2 = 1.25   --->  1  -1位

      0.25  x 2 = 0.5    --->  0  -2位

      0.5   x 2 = 1.0    --->  1  -3位

      0.0   x 2 = 0.0    --->  0  -4位

      ........

  以上得到17.625换算成二进制为10001.101。

     再将10001.101右移,直到小数点前只剩1位,1.0001101 * 24 ,右移动了四位。

      此时,底数和指数就出来了。

      底数:因为小数点前必为1,所以IEEE规定只记录小数点后的就好。所以,此处的底数为:0001101

      指数:实际为4,必须加上127(转出的时候,减去127),所以为131。也就是10000011

        符号:因为是正数,所以是0

   综上所述,17.625在内存中的存储格式是:1000001 10001101 00000000 00000000

Java语言中:float、double数据类型在内存中是如何存储的的更多相关文章

  1. C语言中float,double类型,在内存中的结构(存储方式)

    C语言中float,double类型,在内存中的结构(存储方式)从存储结构和算法上来讲,double和float是一样的,不一样的地方仅仅是float是32位的,double是64位的,所以doubl ...

  2. java中的各种数据类型在内存中存储的方式

    原文地址:http://blog.csdn.net/aaa1117a8w5s6d/article/details/8251456 1.Java是如何管理内存的 java的内存管理就是对象的分配和释放问 ...

  3. 在java语言中int 和 Integer 有什么区别

    在java语言中int 和 Integer 有什么区别 解答:int是基本数据类型,Integer是int的包装类,属于引用类型

  4. 浅谈Java语言中ArrayList和HashSet的区别

    Java语言中ArrayList和HashSet的区别 2019-04-10   13:22:49 一.基本区别 首先一起看个实例,其代码如下: package com.MrZ_baby.com; i ...

  5. 浅谈Java语言中try{}catch{}和finally{}的执行顺序问题

    浅谈Java语言中try{}catch{}和finally{}的执行顺序问题 2019-04-06  PM  13:41:46  1. 不管有没有出现异常,finally块中代码都会执行: 2. 当t ...

  6. java语言中public、private、protected三个关键字的用法,重写和重载的区别。

    java语言中public.private.protected三个关键字的用法,重写和重载的区别. 解答: 作用域 当前类 同包 子类 其它 public √ √ √ √ protected √ √ ...

  7. java语言中Object对象的hashCode()取值的底层算法是怎样实现的

    Java语言中,Object对象有个特殊的方法:hashcode(), hashcode()表示的是JVM虚拟机为这个Object对象分配的一个int类型的数值,JVM会使用对象的hashcode值来 ...

  8. sizeof运算符来获取各种数据类型在内存中所占字节数--gyy整理

    C++并没有规定各种数据类型在内存中的存储大小,依赖于不同的编译器的不同而不同,要想获知当前编译器对各种数据类型分配的大小,可以通过sizeof运算符来获取. 使用方法1: sizeof(数据类型) ...

  9. PC逆向之代码还原技术,第一讲基本数据类型在内存中的表现形式.浮点,指针寻址公式

    目录 代码还原技术 一丶简介代码还原 二丶代码还原中的数据类型表现形式 1.整数类型 2.无符号整数 3.有符号整数 4.浮点数数据类型 5.浮点编码 4.Double类型解析. 三丶浮点汇编 1.浮 ...

随机推荐

  1. Qt for Android (二) Qt打开android的相册

    以下有一个可以用的Demo https://files.cnblogs.com/files/wzxNote/Qt-Android-Gallery-master.zip 网盘地址: https://pa ...

  2. [转][C#].Net反编译利器

    来自:https://www.cnblogs.com/zsuxiong/p/5117465.html 有以下8款非常不错的.Net反编译利器: 1.Reflector Reflector是最为流行的. ...

  3. [Java复习] JVM

    Part1:Java类加载机制:类加载器,类加载机制,双亲委派模型 1. Java 类加载过程? 类加载过程即是指JVM虚拟机把.class文件中类信息加载进内存,并进行解析生成对应的class对象的 ...

  4. Spring Security(4):自定义配置

    接着上节的讲,在添加了@EnableWebSecurity注解后,如果需要自定义一些配置,则需要和继承WebSecurityConfigurerAdapter后,覆盖某些方法. 我们来看一下WebSe ...

  5. 简单范例php调用C# WebService

    准备工作:1. 安装IIS对于PHP的支持,看这里2. 要调用Web Service需要nusoap支持,只要弄个nusoap.php就可以了,把它放在要运行的php文件能够引用的地方,比如我放在同一 ...

  6. WePay-T

    (需先申请微信支付商户账号) 在微信支付中绑定appid,公众号和小程序都一样 微信支付中如下: 微信公众平台如下(公众号与小程序一样): 微擎配置微信支付 appid.appsecret为公众号中对 ...

  7. Hackergame2019 web

    前几天跟着几个大佬一起看了看中科大的Hackergame2019,这个比赛主要针对的是新手,激发新生对CTF比赛的兴趣,虽然我已经大三了,但实在是因为我过于five,也只能帮大佬打打杂,这里把自己做的 ...

  8. windows下编译libnet0.10.11

    以下编译基于windows下visual studio 2013 (注:编译安装完成之后发现与网上的arp教程中使用的libnet不是一个版本,这个版本太老了,最后没有使用. 网络教程上使用的是lib ...

  9. 【ARM-Linux开发】Linux下查看机器的CPU负载

    负载(load)是Linux机器的一个重要指标,直观了反应了机器当前的状态.如果机器负载过高,那么对机器的操作将难以进行. Linux的负载高,主要是由于CPU使用.内存使用.IO消耗三部分构成.任意 ...

  10. 最新 巨人网络java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.巨人网络等10家互联网公司的校招Offer,因为某些自身原因最终选择了巨人网络.6.7月主要是做系统复习.项目复盘.Leet ...