浮点数的表示方法

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.1)2,尾数为1.0,指数为-1。浮点数尾数共23位,右侧以0补全即:100 0000 0000 0000 0000 0000,指数部分为28-1+(-1)=(01111110)2。符号位为0。由于浮点数的尾数第一位全部是1,所有省略尾数的第一位1。0.5=(0011 1111 0000 0000 0000 0000 0000 0000)2

²  1.5

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

²  -12.5

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

 

附:小数的二进制表示法



 

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

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值