吾读 - 《深入理解计算机系统》第二章 信息的表示与处理 (二)浮点

浮点数绝对是计算机系统里最神秘的一种数值。在不了解它之前,很难想象同样是32位数值,int只能表示最大2的31次方,而浮点的表示范围却是-126到正的127次方。

以及浮点还能表示无穷大,NaN等特殊值。

我们也被教育浮点数计算的一些计算规则,例如很大的浮点跟小的浮点计算的时候,要先算小的。
例如判断浮点跟0时,时常使用 if (fval <= 0.00001f) 这种表达式来判断数值是不是可以被当做0了。

今天我们就来一起走近神奇的浮点数。

2.4 浮点

浮点数对形如 V = x ∗ 2 y V = x*2^y V=x2y 的有理数进行编码。

大约在1985年,IEEE标准754的推出,才有了浮点数标准。

由于浮点数的表示方法,必然产生舍入的问题,当一个数字无法精确用这种方式表示的时候,就需要向上或者向下进行舍入。

不难理解32位浮点表示范围比32整数范围大那么多,那么必然出现很多数值其实浮点数是表达不了的。

2.4.1 二进制小数

理解浮点数的第一步是理解二进制小数。

十进制小数可以表示为

d m d m − 1 ⋯ d 1 d 0 . d − 1 d − 2 ⋯ d − n d = ∑ i = − n m 1 0 i × d i d_md_{m-1} \cdots d_1d_0.d_{-1}d_{-2}\cdots d_{-n} \\ d = \sum_{i=-n}^{m}10^i \times d_i dmdm1d1d0.d1d

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值