浮点数详解(一篇彻底学通浮点数) 您所在的位置:网站首页 实数的英文字母表示 浮点数详解(一篇彻底学通浮点数)

浮点数详解(一篇彻底学通浮点数)

2024-06-23 07:04| 来源: 网络整理| 查看: 265

文章目录 浮点数一.什么是浮点数二.浮点数的形式1.非规格化浮点数2.规格化浮点数 三.IEEE754标准浮点数1.单精度浮点数2.双精度浮点数 四.浮点数的运算1.浮点数的加减法2.浮点数的乘除法 五.C语言中的浮点数分析

浮点数 一.什么是浮点数

浮点数是与定点数相对的概念,计算机中的定点数约定小数点的位置不变,即人为约定俗成地规定了一个数小数点的位置。例如定点纯整数约定了小数点在数值位的最后。定点纯小数约定了数值位的最高位在小数点后面。

由于计算机字长的限制,当需要表示的数据有很大的数值范围时,他们不能直接用定点小数或者定点整数表示

二.浮点数的形式

浮点数由尾数M和阶码E构成。基数为2的数F的浮点数表示为: F = M ∗ 2 E F=M*2^E F=M∗2E

浮点数编码规则:

尾数M必须为小数,用n+1位有符号定点小数表示,可采用的原码,补码。阶码E必须为整数,用k+1位有符号定点整数表示,可采用原码,补码,移码。浮点数编码的位数m=(n+1)+(k+1)浮点数的编码格式有多种,格式的选择可由计算机设计人员决定,例如: 阶符阶码数值部分数符尾数数值部分1k1n

其中:

(1)阶码是整数,其位数k+1决定了浮点数表示的数值范围,也就是决定了数据的大小,或小数点在数据中的真实位置。阶符决定阶码的正负。即阶码越长,所能表示的范围越大

(2)尾数是小数,其位数n+1决定了浮点数的精度,如果尾数采用小数且位数n足够长,则当浮点数运算需要对尾数运算结果舍入时,造成的数据精度损失会比较小。即尾数越长,所能表示的精度越高

(3)尾数的符号表示浮点数的正负。

1.非规格化浮点数

当对尾数M只要求是小数而无其他限制时,此时的浮点数被称为非规格化浮点数。 假设阶码和尾数都用补码表示,则非规格化浮点数可表示的范围如下:

阶码和尾数数值阶码和尾数数值阶码最小值 − 2 k -2^k −2k阶码最大值 2 k − 1 2^k-1 2k−1尾数最小负值-1尾数最大负值 − 2 − n -2^{-n} −2−n尾数最小正值 + 2 − n +2^{-n} +2−n尾数最大正值 + ( 1 − 2 − n ) +(1-2^{-n}) +(1−2−n)

以8位数值位,一位符号位的阶码为例子: 由于用补码表示, 所以阶码的最小值应该为:1 00000000 即 -2^8 = -256 而阶码的最大值应为:0 11111111 即 2^8-1 = 255

再来分析尾数的情况,假设尾数也是8位数值位,1为符号位补码的形式: 由于我们限定了浮点数的尾数只能是小数,所以我们当成定点纯小数的形式进行分析: 1.00000000表示了-1的补码,即尾数的最小负值 1.11111111 表示了 − 2 − n -2^{-n} −2−n的补码,即尾数的最大负值,其原码是1.00000001 0.11111111表示了 + ( 1 − 2 − n ) +(1-2^{-n}) +(1−2−n)的补码(原码),即尾数的最大正值 0.00000001表示了 + 2 − n +2^{-n} +2−n的补码(原码),即尾数的最小正值 当然0.00000000表示0,是其最小绝对值

2.规格化浮点数

为了使有限字长的二进制尾数能表示更多的有效数位,同时使浮点数有统一的表示形式,浮点数通常采用规格化形式来表示。

规格化浮点数要求将尾数M的绝对值限定在规定的数值范围之内,即 1 2 ≤ ∣ M ∣ < 1 ( 对 于 原 码 而 言 ) \frac{1}{2}\le|M|



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有