带符号浮点数
我们日常生活中存在的实数,对于表示非常小的数字(例如 +0.00000012347650)并不方便。同样的数字可以用科学记数法更方便地表示为 +1.23476× 10−07。但这实际上代表 +0.000000123476。所以存在 0.00000000000005 的误差,这形成了一个非常小的百分比误差。
浮点表示在概念上类似于科学记数法。逻辑上,浮点数由以下部分组成:
给定长度的给定基数(或基数)中带符号的(表示正数或负数)数字字符串。此数字字符串称为尾数、尾数或系数。
修改数字大小的带符号整数指数。
需要注意的是,当用固定数量的位(例如,32 位或 64 位)表示时,浮点数会遭受精度损失。这是因为存在无限数量的实数(即使在 0.0 到 0.1 的小范围内)。另一方面,一个 n 位二进制模式可以表示有限的 2n 个不同的数字。因此,并非所有实数都可以表示。浮点数运算效率远低于整数运算。因此,如果应用程序不需要浮点数,最好使用整数。将使用最接近的近似值,从而导致精度损失。现代计算机采用 IEEE 754 标准来表示浮点数。有两种表示方案:32 位单精度和 64 位双精度。
IEEE 浮点数具有三个基本组成部分:符号、指数和尾数。尾数由分数和隐式前导数字(如下所述)组成。指数基数(2)是隐式的,不需要存储。
下表显示了单精度(32 位)和双精度(64 位)浮点值的布局。每个字段的位数显示在后面,后面跟着方括号中的位范围。00 = 最低有效位。
符号 | 指数 | 分数 | |
单精度 | 1 [31] | 8 [30–23] | 23 [22–00] |
双精度 | 1 [63] | 11 [62–52] | 52 [51–00] |
以位表示,浮点数如下所示:
单精度 - SEEEEEEE EFFFFFFF FFFFFFFF FFFFFFFF
双精度 - SEEEEEEE EEEEFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFFFFFFFFFF
广告