浮点数详解(一篇彻底学通浮点数) | 您所在的位置:网站首页 › 实数的英文字母表示 › 浮点数详解(一篇彻底学通浮点数) |
文章目录
浮点数一.什么是浮点数二.浮点数的形式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 实验室设备网 版权所有 |