《深入理解计算机系统》笔记 (3) 浮点数

本文详细介绍了浮点数在计算机中的表示方法,包括二进制小数、IEEE浮点标准(单精度和双精度)、浮点数的舍入规则以及浮点数的加减乘除运算。讨论了规格化浮点数、非规格化浮点数和特殊值(如无穷和NaN)的概念,并阐述了C语言中浮点数的处理方式。
摘要由CSDN通过智能技术生成

浮点表示是对形如 V = x\cdot 2^{y} 的有理数进行编码,对于极大数和极小数的表示,以及实数运算的近似值运算来说非常有用。

二进制小数

要理解浮点数,首先需要考虑含有小数的二进制数字。一个任意进制的数,它的每一位都有一个权重,而这个权重与它的进制以及小数点的位置有关。对于二进制数,考虑一个形如 b_{m}b_{m-1}\cdot \cdot \cdot b_{1}b_{0}.b_{-1}b_{-2}\cdot \cdot \cdot b_{-n-1}b_{-n} 的表示法(小数点位置在b_{0}b_{-1}之间),其中每一位的取值范围都为0和1,用公式来表示即是

                                                                                     \large b=\sum_{i=-n}^{m}2^{i} \cdot b_{i}

位于小数点左边的位的权是2的正幂,右边的权则是2的负幂。通过这种表示法,可以很容易发现,二进制小数点左移一位相当于将这个数除以2,而右移一位相当于这个数乘2。事实上,对与2相关的除法或乘法就常采用左移或右移。

然而,小数的二进制表示法只能表示那些能够被写成 x\cdot 2^{y} 的数,其他的值只能被近似表示;并且,在一个m+n+1位的数中,小数点的位置固定,表数的范围会很有限。由于这些局限性,我们需要一个实用的浮点数表示方法。

IEEE浮点表示

IEEE浮点标准用 V = (-1)^{s}\cdot 2^{E}\cdot M 的形式来表示一个浮点数:

  1. 符号位 s 决定数的正(s=0)负(s=1);
  2. 尾数 M 是一个二进制小数,范围为 [1, 2) 或 [0, 1),是由小数字段frac和阶码决定的。根据阶码的不同,尾数 M 表示为 1.f 或 0.f ,导致了尾数的范围为 [1, 2) 或 [0, 1);
  3. 阶码 E 的作用是对尾数加权,这个权重是2^{E}。<
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值