浮点数:IEEE 754标准
IEEE 754 标准是一种由电气和电子工程师协会(IEEE)制定的浮点数表示的标准,广泛应用于计算机系统中,下面是详细介绍:
历史背景
在 IEEE 754 标准出现之前,不同的计算机系统采用各自的浮点数表示方法,这给程序的可移植性带来了很大的困难。为了解决这个问题,IEEE 组织成立了专门的工作组,经过多年的研究和讨论,于 1985 年正式发布了 IEEE 754 标准。
基本格式
- 二进制浮点数格式 :包括单精度(32 位)、双精度(64 位)和扩展精度(80 位)。其中,单精度浮点数的 1 位是符号位,接下来的 8 位是指数位,最后的 23 位是尾数位;双精度浮点数的 1 位是符号位,接下来的 11 位是指数位,最后的 52 位是尾数位。
- 十进制浮点数格式 :包括 32 位、64 位和 128 位三种。十进制浮点数格式在存储和运算时直接使用十进制数,避免了二进制浮点数在表示十进制数时可能出现的精度问题,但在存储效率和运算速度上可能不如二进制浮点数格式。
数的表示
- 零 :零的指数位和尾数位都为全零,符号位可以是 0 或 1。正零和负零在数值上相等,但在某些运算中可能会产生不同的结果。
- 无穷大 :当指数位全为 1 且尾数位全为零时,表示无穷大。符号位为 0 表示正无穷大,符号位为 1 表示负无穷大。
- NaN(Not a Number) :当指数位全为 1 且尾数位不全为零时,表示 NaN。NaN 用于表示一些非法或不确定的运算结果,如 0/0、∞−∞ 等。
运算规则
- 加减法运算 :首先需要对阶,即把两个数的指数调整为相同的值。然后进行尾数的加减运算,最后进行舍入和规格化处理。
- 乘除法运算 :将两个数的尾数相乘或相除,指数相加或相减。然后对结果进行舍入和规格化处理。
舍入规则
- 向最接近偶数舍入 :这是默认的舍入方式。在需要舍入时,选择最接近的可表示数,如果两个数距离相等,则选择尾数最低位为 0 的那个数。
- 向零舍入 :直接舍去多余的部分,不进行任何调整。
- 向正无穷舍入 :总是朝正无穷方向舍入,结果是大于或等于原数的那个可表示数。
- 向负无穷舍入 :总是朝负无穷方向舍入,结果是小于或等于原数的那个可表示数。
优点和影响
- 优点 :提高了浮点数运算的精度和可靠性,增强了程序的可移植性,为计算机系统的硬件设计和软件开发提供了统一的规范。
- 影响 :IEEE 754 标准被广泛应用于计算机处理器、编程语言、数学库等各个领域,成为现代计算机系统中浮点数表示和运算的基础标准。