-5 浮点数推导

二进制转十进制

1 10000001 01000000000000000000000

1 10000001 101000000000000000000000 如果指数位不全为 0 则尾数位首位+1 ,如果指数位全为 0,则尾数位首位+0

十进制 = -1 * 2^(129-127) * (1 * 2^0 + 1 * 2^-2) = -1 * 4 * 1.25 = -5

十进制转二进制

5 = 101(B) = 1.01 * 2^2 指数为 2,则指数段的值为 2+127 = 129 = 10000001 因为不全为 0 尾数部分首位的 1 去掉,然后右侧补全 0

1 负数

1 10000001 指数段的值为 2+127=129

1 10000001 101 尾数段为 101

1 10000001 01 因为不全为 0 尾数部分首位的 1 去掉

1 10000001 01000000000000000000000 然后右侧补全 0,尾数部分一共23 位

十进制(整数)转二进制(整数)

除2取余, (直到商为 0) ,逆序

789=1100010101(B)

394 1

197 0

98 1

49 0

24 1

12 0

6 0

3 0

1 1

0 1 (最终 商 < 1)

1100010101

推理: A = abcdef(B)

A = f * 2 ^ 0 + e * 2 ^ 1+ d * 2 ^ 2 + c * 2 ^ 3+ b * 2 ^ 4 + a * 2 ^ 5

A/2 = e * 2 ^ 0+ d * 2 ^ 1+ c * 2 ^ 2 + b * 2 ^ 3 + a * 2 ^ 4 除以 2 留余数得到 f

.... 除以 2 留余数得到 d

..... 除以 2 留余数得到 a

反过来写就是 abcdef

十进制纯小数转换成二进制纯小数

乘2 取整,直到小数部分为 0(或者达到所要求的精度…),顺序排列

0.8125 = (0.1101)(B)

1.6250 1

1.25 1

0.5 0

1.0 1

十进制小数转换成二进制小数

整数部分与小数部分合并

(789.8125) = 1100010101.1101(B)

float 特殊值

|含义|数值|

|--|--|

|正无穷 | 0 11111111 00000000000000000000000 |

|负无穷 | 1 11111111 00000000000000000000000|

|NaN | 0 11111111 10000000000000000000000|

|最大浮点数 | 0 11111110 11111111111111111111111|1.11111111111111111111111 * 2^(254-127)

|最小规范化正浮点数 | 0 00000001 00000000000000000000000|1.0 * 2^1-127|

|最小正浮点数 | 0 00000000 00000000000000000000000|

|0 | 0 00000000 00000000000000000000000|

注意

  • float最大精度 小数点后 6 位

  • 浮点数 0.99 根本没办法用二进制表示 ,无穷多的 11111 只有 0.5 倍数的可以被二进制科学计数法表示


感谢您的耐心阅读,如果您发现文章中有一些没表述清楚的,或者是不对的地方,请给我留言,您的鼓励是作者写作最大的动力。

作 者 : @mousycoder

原文出处 : http://mousycoder.com/thinking-in-jvm/3/

【深入浅出-JVM】(3):浮点数的更多相关文章

  1. 深入浅出 JVM GC(3)

    # 前言 在 深入浅出 JVM GC(2) 中,我们介绍了一些 GC 算法,GC 名词,同时也留下了一个问题,就是每个 GC 收集器的具体作用.有哪些 GC 收集器呢? Serial 串行收集器(只适 ...

  2. 深入浅出 JVM GC(2)

    # 前言 在 深入浅出 JVM GC(1) 中,限于上篇文章的篇幅,我们留下了一个问题 : 如何回收? 这篇文章将重点讲述这个问题. 在上篇文章中,我们也列出了一些大纲,今天我们就按照那个大纲来逐个讲 ...

  3. 阿里架构师带你深入浅出jvm

    本文跟大家聊聊JVM的内部结构,从组件中的多线程处理,JVM系统线程,局部变量数组等方面进行解析 JVM JVM = 类加载器(classloader) + 执行引擎(execution engine ...

  4. JVM之浮点数(float)表示

    1. 浮点数的组成:符号位.指数位.尾数位. 1.1 符号位: 占1位,表示正负数: 1.2 指数位: 占8位: 1.3 尾数位: 占23位. 2.  浮点数的表示: 2.1 取值: sflag * ...

  5. 深入浅出 JVM GC(4)常用 GC 参数介绍

    # 前言 从前面的3篇文章中,我们分析了5个垃圾收集器,还有一些 GC 的算法,那么,在 GC 调优中,我们肯定会先判断哪里出现的问题,然后再根据出现的问题进行调优,而调优的手段就是 JVM 提供给我 ...

  6. 深入浅出 JVM ClassLoader

    # 前言 在 JVM 综述里面,我们说,JVM 做了三件事情,Java 程序的内存管理, Java Class 二进制字节流的加载(ClassLoader),Java 程序的执行(执行引擎).我们也说 ...

  7. 深入浅出 JVM GC(1)

    # 前言 初级 Java 程序员步入中级程序员的有一个无法绕过的阶段------GC(Garbage Collection).作为 Java 程序员,说实话,很幸福,不用像 C 程序员那样,时刻关心着 ...

  8. 深入浅出JVM

    这篇文章简要解析了JVM的内部结构.下面这幅图展示了一个典型的JVM(符合JVM Specification Java SE 7 Edition)所具备的关键内部组件. 上图展示的所有这些组件都将在下 ...

  9. 对JVM还有什么不懂的?一文章带你深入浅出JVM!

    本文跟大家聊聊JVM的内部结构,从组件中的多线程处理,JVM系统线程,局部变量数组等方面进行解析 JVM JVM = 类加载器(classloader) + 执行引擎(execution engine ...

随机推荐

  1. NET实现RSA AES DES 字符串 加密解密以及SHA1 MD5加密

    本文列举了    数据加密算法(Data Encryption Algorithm,DEA) 密码学中的高级加密标准(Advanced EncryptionStandard,AES)RSA公钥加密算法 ...

  2. git 专题

    $ git pull origin test // git pull合并代码的时候,若发生冲突,会处于merging状态,检查代码,发现自己的分支低于主分支,这个时候想撤销merge // 撤销mer ...

  3. Win8 Metro(C#)数字图像处理--2.67图像最大值滤波器

    原文:Win8 Metro(C#)数字图像处理--2.67图像最大值滤波器  [函数名称]   最大值滤波器WriteableBitmap MaxFilterProcess(WriteableBi ...

  4. Python杂谈: __init__.py的作用

    我们经常在python的模块目录中会看到 "__init__.py"  这个文件,那么它到底有什么作用呢? 1. 标识该目录是一个python的模块包(module package ...

  5. 微信小程序把玩(三十二)Image API

    原文:微信小程序把玩(三十二)Image API 选择图片时可设置图片是否是原图,图片来源.这用的也挺常见的,比如个人中心中设置头像,可以与wx.upLoadFile()API使用 主要方法: wx. ...

  6. 使用内核对象Mutex可以防止同一个进程运行两次

    用互斥法实现防止程序重复运行,使用内核对象Mutex可以防止同一个进程运行两次.注意:是名称相同的进程,而不是exe,因为exe程序可以改名. using System.Threading; publ ...

  7. SQL Server上唯一的数据库集群:负载均衡、读写分离、容灾(数据零丢失、服务高可用)

    SQL Server上唯一的数据库集群:负载均衡.读写分离.容灾(数据零丢失.服务高可用).审计.优化,全面解决数据库用户问题.一键安装,易用稳定,性价比高,下载链接:http://www.zheti ...

  8. 十个 Web 开发者熟悉的经典开源项目和工具

    摘要: 一个都不知道的算我输! 这篇文章主要列出了曾经乃至现在都十分受 Web 开发者欢迎的开源工具,相信使用开源工具的 Web 开发者会对它们感兴趣的,它们中有的甚至诞生十多年了,但仍然在发光发热. ...

  9. win10应用开发——如何判断应用是在手机上运行还是电脑上运行

    原文:win10应用开发--如何判断应用是在手机上运行还是电脑上运行 在进行uwp应用开发的时候, 有时我们需要知道自己的应用是在手机端运行还是在桌面端运行,那么通过以下的api就可以进行判断: Wi ...

  10. 用CDialog实现的消息框MessageBoxST类

    http://blog.csdn.net/akof1314/article/details/5078563