`
iceside
  • 浏览: 13681 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

IEEE浮点数表示

    博客分类:
  • java
 
阅读更多

Java 语言支持两种基本的浮点类型: float  double ,以及与它们对应的包装类 Float  Double 。它们都依据 IEEE 754 标准,该标准为 32 位浮点和 64 位双精度浮点二进制小数定义了二进制标准。

IEEE 754 用科学记数法以底数为 2 的小数来表示浮点数。IEEE 浮点数用 1 位表示数字的符号,用 8 位来表示指数,用 23 位来表示尾数,即小数部分。作为有符号整数的指数可以有正负之分。小数部分用二进制(底数 2)小数来表示,这意味着最高位对应着值 (2 -1),第二位对应着 (2 -2),依此类推。对于双精度浮点数,用 11 位表示指数,52 位表示尾数。IEEE 浮点值的格式如图 1 所示。


1. IEEE 754 浮点数的格式 


  

在上图中,s标识浮点数的符号(正值或负值,正值为0,负值为1);exponent标识阶码(也称偏移量:浮点数为28-1,双精度浮点数为210-1+指数;mantissa标识尾数。因为用科学记数法可以有多种方式来表示给定数字,所以要规范化浮点数,以便用底数为 2 并且小数点左边为 1 的小数来表示,按照需要调节指数就可以得到所需的数字。所以,例如:

²  1.25 可以表示为尾数为 1.01,指数为 0 (-1)0*(1.01)2*20

²  10.0 可以表示为尾数为 1.01,指数为 3 (-1)0*(1.01)2*23

 

具体实例如下:

²  0.5

0.5=0.12,尾数为1.0,指数为-1。浮点数尾数共23位,右侧以0补全即:100 0000 0000 0000 0000 0000,指数部分为28-1+-1=011111102。符号位为0。由于浮点数的尾数第一位全部是1,所有省略尾数的第一位10.5=0011 1111 0000 0000 0000 0000 0000 00002

²  1.5

1.5=1.12,尾数为1.1,指数为0,右侧以0补全即:110 0000 0000 0000 0000 0000,指数部分为28-1+0=011111112。符号位为0,省略尾数第一位的1,即1.5=0011 1111 1100 0000 0000 0000 0000 00002

²  -12.5

-12.5=-1100.12,尾数为1.1001,指数为3,浮点数尾数即:110 0100 0000 0000 0000 0000,指数部分为28-1+3=100000102,符号位为1,省略尾数第一位的1,即-12.5=1100 0001 0100 1000 0000 0000 0000 00002

 

附:小数的二进制表示法



 

0.02625=0.0000011012,由于无法精确求出二进制表示,因此采用“四舍五入法”(逢1进,逢0舍)。

  • 大小: 15 KB
  • 大小: 11.3 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics