IEEE_754关于浮点数的规定
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
来自百度文库
把十进制数100.25转换成协处理器中的 例1 把十进制数 转换成协处理器中的 浮点数 解:1、进制转换: 、进制转换: (100.25)10=(1100100.01)2 2、规格化: 、规格化: (1100100.01)2=1.10010001×26 × =1.10010001×2110 × 3、计算阶码: 、计算阶码: 110+01111111=10000101 = 4、数值的符号位为:0, 、数值的符号位为: , 阶码为: 阶码为:10000101, , 尾数为: 尾数为: 1001 0001 0000 0000 0000 000
在定义浮点数时, 在定义浮点数时,要使用伪指 令.8087、.287或.387等。 、 或 等 例如: 例如: .387 0000 3F9DF3B6 Data1 DD 1.234 ;定义单精度浮点数 定义单精度浮点数 0004 C1BB3333 Data2 DD –23.4 0008 43D20000 Data3 REAL4 4.2E2 ;定义单精度浮点数 定义单精度浮点数
综合上述可得: 综合上述可得: (100.25)10的浮点形式为: 的浮点形式为: 0 10000101 10010001000000000000000
几个特殊数据的存储规则: 几个特殊数据的存储规则: 所有的数据位都是0; 正0: 所有的数据位都是 ; 最高位为1,其它的数据位是0; 负0: 最高位为 ,其它的数据位是 ; 负无穷: 正/负无穷 符号位为 ,阶码位全为 , 负无穷 符号位为0/1,阶码位全为1, 有效数字全为0; 有效数字全为 ; NAN: 非法的浮点数,阶码位全为 ,有效 非法的浮点数,阶码位全为1, 数字不全为0; 数字不全为 ; 其中: 其中:NAN — Not-A-Number。 。
五、浮点数说明形式 在汇编语言中,可用DD、 和 来分 在汇编语言中,可用 、DQ和DT来分 别说明单精度、双精度和扩展精度的浮点数。 别说明单精度、双精度和扩展精度的浮点数。 在MASM 6.11系统提供了新的浮点数说 系统提供了新的浮点数说 明方法。 明方法。 可用REAL4、REAL8和REAL10来分别 即:可用 、 和 来分别 代替DD、 和 。 代替 、DQ和DT。
习题: 习题 1.将下列十进制数用 进制 将下列十进制数用16进制 将下列十进制数用 进制IEEE 754 单精 度代码表示 (1) –35 (2) 3.75 (3) 5 2.将下列 进制 将下列16进制 将下列 进制IEEE 754 单精度代码转换成 十进制数 (1) 41F00000 (2) BF600000 (3) 3F800000
一、 IEEE754对阶码作如下规定 对阶码作如下规定
偏移阶码E 0 1 2 … 127 128 129 … 254 255 实际阶码值 保留做操作数 -126 -125 0 1 2 127 保留做操作数
二、对上溢和下溢的处理 当运算结果小于规格化浮点数所能表示的 最小值时,以前硬件处理策略,或者结果置0 最小值时,以前硬件处理策略,或者结果置 或者产生一个下溢陷阱, 或者产生一个下溢陷阱 , 这两种方案均不能 令人满意。 令人满意。 IEEE754处理方法是使用非规格化数 。 处理方法是使用非规格化数。 处理方法是使用非规格化数 这时阶码为0(即移码-127),尾数没有隐含 这时阶码为 (即移码 ) 最高位是0。 位,最高位是 。 这样的结果是降低精度,扩大表示范围。 这样的结果是降低精度,扩大表示范围。 如原来规格化单精度最小值是1.0x2-126,而非 如原来规格化单精度最小值是 而非 规格化单精度最小值是2 只有1 规格化单精度最小值是 -23 x2-126=2-149(只有 只有 位有效位) 位有效位 。
2、还原阶码: 、还原阶码: 10000011 – 01111111=100 = 3、该浮点数的规格化形式: 、该浮点数的规格化形式: 1.1001001×24 × (其中前面的“1.”从隐含位而来 其中前面的“ 从隐含位而来 从隐含位而来) 其中前面的 4、该浮点数的非规格化形式: 、该浮点数的非规格化形式: 11001.001 5、该浮点数的十进制数为-25.125 (因为符 、该浮点数的十进制数为 因为符 号位为1,所以,该数是负数) 号位为 ,所以,该数是负数
S 0/1 0/1 0/1 0/1 0/1 E 0 0 1~254 255 255 M 0 非0 任意 0 非0 意义 ±0 非规格化数 规格化数 ±无穷大 NaN
三、十进制数转换成浮点数的步骤 1、将十进制数转换成二进制数:整数部分用 、将十进制数转换成二进制数: 2来除,小数部分用 来乘; 来除, 来乘; 来除 小数部分用2来乘 2、规格化二进制数:改变阶码,使小数点前 、规格化二进制数:改变阶码, 面仅有第一位有效数字; 面仅有第一位有效数字; 3、计算阶码: 、计算阶码: 短型浮点数的阶码加上偏移量7FH 短型浮点数的阶码加上偏移量 长型浮点数的阶码加上偏移量3FFH 长型浮点数的阶码加上偏移量 扩展型浮点数的阶码加上偏移量3FFFH 扩展型浮点数的阶码加上偏移量 4、以浮点数据格式存储。 、以浮点数据格式存储。 把数值的符号位、 把数值的符号位、阶码和尾数合在一起 就得到了该数的浮点存储形式。 就得到了该数的浮点存储形式。
000C 405ED9999999999A Data4 DQ 123.4;定义双精度浮点数 定义双精度浮点数 0014 405ED9999999999A Data5 REAL8 123.4;定义双精度浮点数 定义双精度浮点数 001C 4005F6CCCCCCCCCCCCCD Data6 REAL10 123.4 ;定义扩展精度浮点数 定义扩展精度浮点数
四、浮点数转换成十进制数的步骤 该步骤与前面“十进制数转换成浮点数” 该步骤与前面“十进制数转换成浮点数” 的步骤是互逆的,其具体步骤如下: 的步骤是互逆的,其具体步骤如下: 1、分割数字的符号、阶码和有效数字; 、分割数字的符号、阶码和有效数字; 2、将偏移阶码减去偏移,得到真正的阶码; 、将偏移阶码减去偏移,得到真正的阶码; 3、把数字写成规格化的二进制数形式; 、把数字写成规格化的二进制数形式; 4、把规格化的二进制数改变成非规格化的 、 二进制数; 二进制数; 5、把非规格化的二进制数转换成十进制数。 、把非规格化的二进制数转换成十进制数。
IEEE 754 关于浮点数的规定 在计算机中,浮点数一般由三部分组成: 在计算机中,浮点数一般由三部分组成: 数值的符号位、阶码和尾数。 数值的符号位、阶码和尾数。 这种浮点数是用科学记数法来表示的, 这种浮点数是用科学记数法来表示的, 即: 浮点数=符号位.尾数 尾数× 浮点数=符号位 尾数×2阶码。
对上溢用无穷大表示,同时规定 对上溢用无穷大表示 同时规定: 同时规定 无穷大+任何数 无穷大 无穷大 任何数=无穷大 任何数 任何有限数÷ 无穷大 任何有限数÷0=无穷大 任何有限数÷无穷大=0 任何有限数÷无穷大 无穷大÷无穷大=NaN 无穷大÷无穷大 NaN(Not A Number)
。 这样IEEE754有5种类型浮点数据 如下表 种类型浮点数据,如下表 这样 有 种类型浮点数据 如下表:
根据IEEE 754标准 符号位也是 “ 0” 代 标准,符号位也是 根据 标准 符号位也是“ ” 表正数;“ ”代表负数. 表正数 “1”代表负数 阶码用移码表示, 尾数规格化形式,但格 阶码用移码表示 , 尾数规格化形式 但格 式如下:1.XXX…X。由于最高位总是 因此省 式如下 。由于最高位总是1,因此省 称隐藏位(临时实数则不隐藏 略,称隐藏位 临时实数则不隐藏 称隐藏位 临时实数则不隐藏). 尾数比规格化表示大一倍,而阶码部分则 尾数比规格化表示大一倍 而阶码部分则 比一般小1,即 移 比一般小 即[E]移=2n+E-1=127+E 这样,尾数与通常意义的尾数的含义不一 这样 尾数与通常意义的尾数的含义不一 为了区别,754 中的尾数称为有效数 中的尾数称为有效数. 致,为了区别 为了区别
例11.2 把浮点数 1100000111001001000000000000转换成十 转换成十 进制数。 进制数。 解: 1、把浮点数 、 1100000111001001000000000000 分割成三部分,可得: 分割成三部分,可得: 符号位是1, 符号位是 , 阶码 是10000011, , 尾数 是1001001000000000000
根据IEEE 754国际标准,常用的浮点数有两 国际标准, 根据 国际标准 种格式: 种格式: (1) 单精度浮点数 位),阶码 位,尾数 单精度浮点数(32位 ,阶码8位 尾数24 内含1位符号位 位(内含 位符号位 。 内含 位符号位)。 (2) 双精度浮点数(64位),阶码11位,尾数53 双精度浮点数 位 ,阶码 位 尾数 内含1位符号位 位(内含 位符号位 。 内含 位符号位)。 (3) 临时浮点数 位),阶码 位,尾数 位 临时浮点数(80位 ,阶码15位 尾数65位 (内含 位符号位 。 内含1位符号位 内含 位符号位)。
把十进制数100.25转换成协处理器中的 例1 把十进制数 转换成协处理器中的 浮点数 解:1、进制转换: 、进制转换: (100.25)10=(1100100.01)2 2、规格化: 、规格化: (1100100.01)2=1.10010001×26 × =1.10010001×2110 × 3、计算阶码: 、计算阶码: 110+01111111=10000101 = 4、数值的符号位为:0, 、数值的符号位为: , 阶码为: 阶码为:10000101, , 尾数为: 尾数为: 1001 0001 0000 0000 0000 000
在定义浮点数时, 在定义浮点数时,要使用伪指 令.8087、.287或.387等。 、 或 等 例如: 例如: .387 0000 3F9DF3B6 Data1 DD 1.234 ;定义单精度浮点数 定义单精度浮点数 0004 C1BB3333 Data2 DD –23.4 0008 43D20000 Data3 REAL4 4.2E2 ;定义单精度浮点数 定义单精度浮点数
综合上述可得: 综合上述可得: (100.25)10的浮点形式为: 的浮点形式为: 0 10000101 10010001000000000000000
几个特殊数据的存储规则: 几个特殊数据的存储规则: 所有的数据位都是0; 正0: 所有的数据位都是 ; 最高位为1,其它的数据位是0; 负0: 最高位为 ,其它的数据位是 ; 负无穷: 正/负无穷 符号位为 ,阶码位全为 , 负无穷 符号位为0/1,阶码位全为1, 有效数字全为0; 有效数字全为 ; NAN: 非法的浮点数,阶码位全为 ,有效 非法的浮点数,阶码位全为1, 数字不全为0; 数字不全为 ; 其中: 其中:NAN — Not-A-Number。 。
五、浮点数说明形式 在汇编语言中,可用DD、 和 来分 在汇编语言中,可用 、DQ和DT来分 别说明单精度、双精度和扩展精度的浮点数。 别说明单精度、双精度和扩展精度的浮点数。 在MASM 6.11系统提供了新的浮点数说 系统提供了新的浮点数说 明方法。 明方法。 可用REAL4、REAL8和REAL10来分别 即:可用 、 和 来分别 代替DD、 和 。 代替 、DQ和DT。
习题: 习题 1.将下列十进制数用 进制 将下列十进制数用16进制 将下列十进制数用 进制IEEE 754 单精 度代码表示 (1) –35 (2) 3.75 (3) 5 2.将下列 进制 将下列16进制 将下列 进制IEEE 754 单精度代码转换成 十进制数 (1) 41F00000 (2) BF600000 (3) 3F800000
一、 IEEE754对阶码作如下规定 对阶码作如下规定
偏移阶码E 0 1 2 … 127 128 129 … 254 255 实际阶码值 保留做操作数 -126 -125 0 1 2 127 保留做操作数
二、对上溢和下溢的处理 当运算结果小于规格化浮点数所能表示的 最小值时,以前硬件处理策略,或者结果置0 最小值时,以前硬件处理策略,或者结果置 或者产生一个下溢陷阱, 或者产生一个下溢陷阱 , 这两种方案均不能 令人满意。 令人满意。 IEEE754处理方法是使用非规格化数 。 处理方法是使用非规格化数。 处理方法是使用非规格化数 这时阶码为0(即移码-127),尾数没有隐含 这时阶码为 (即移码 ) 最高位是0。 位,最高位是 。 这样的结果是降低精度,扩大表示范围。 这样的结果是降低精度,扩大表示范围。 如原来规格化单精度最小值是1.0x2-126,而非 如原来规格化单精度最小值是 而非 规格化单精度最小值是2 只有1 规格化单精度最小值是 -23 x2-126=2-149(只有 只有 位有效位) 位有效位 。
2、还原阶码: 、还原阶码: 10000011 – 01111111=100 = 3、该浮点数的规格化形式: 、该浮点数的规格化形式: 1.1001001×24 × (其中前面的“1.”从隐含位而来 其中前面的“ 从隐含位而来 从隐含位而来) 其中前面的 4、该浮点数的非规格化形式: 、该浮点数的非规格化形式: 11001.001 5、该浮点数的十进制数为-25.125 (因为符 、该浮点数的十进制数为 因为符 号位为1,所以,该数是负数) 号位为 ,所以,该数是负数
S 0/1 0/1 0/1 0/1 0/1 E 0 0 1~254 255 255 M 0 非0 任意 0 非0 意义 ±0 非规格化数 规格化数 ±无穷大 NaN
三、十进制数转换成浮点数的步骤 1、将十进制数转换成二进制数:整数部分用 、将十进制数转换成二进制数: 2来除,小数部分用 来乘; 来除, 来乘; 来除 小数部分用2来乘 2、规格化二进制数:改变阶码,使小数点前 、规格化二进制数:改变阶码, 面仅有第一位有效数字; 面仅有第一位有效数字; 3、计算阶码: 、计算阶码: 短型浮点数的阶码加上偏移量7FH 短型浮点数的阶码加上偏移量 长型浮点数的阶码加上偏移量3FFH 长型浮点数的阶码加上偏移量 扩展型浮点数的阶码加上偏移量3FFFH 扩展型浮点数的阶码加上偏移量 4、以浮点数据格式存储。 、以浮点数据格式存储。 把数值的符号位、 把数值的符号位、阶码和尾数合在一起 就得到了该数的浮点存储形式。 就得到了该数的浮点存储形式。
000C 405ED9999999999A Data4 DQ 123.4;定义双精度浮点数 定义双精度浮点数 0014 405ED9999999999A Data5 REAL8 123.4;定义双精度浮点数 定义双精度浮点数 001C 4005F6CCCCCCCCCCCCCD Data6 REAL10 123.4 ;定义扩展精度浮点数 定义扩展精度浮点数
四、浮点数转换成十进制数的步骤 该步骤与前面“十进制数转换成浮点数” 该步骤与前面“十进制数转换成浮点数” 的步骤是互逆的,其具体步骤如下: 的步骤是互逆的,其具体步骤如下: 1、分割数字的符号、阶码和有效数字; 、分割数字的符号、阶码和有效数字; 2、将偏移阶码减去偏移,得到真正的阶码; 、将偏移阶码减去偏移,得到真正的阶码; 3、把数字写成规格化的二进制数形式; 、把数字写成规格化的二进制数形式; 4、把规格化的二进制数改变成非规格化的 、 二进制数; 二进制数; 5、把非规格化的二进制数转换成十进制数。 、把非规格化的二进制数转换成十进制数。
IEEE 754 关于浮点数的规定 在计算机中,浮点数一般由三部分组成: 在计算机中,浮点数一般由三部分组成: 数值的符号位、阶码和尾数。 数值的符号位、阶码和尾数。 这种浮点数是用科学记数法来表示的, 这种浮点数是用科学记数法来表示的, 即: 浮点数=符号位.尾数 尾数× 浮点数=符号位 尾数×2阶码。
对上溢用无穷大表示,同时规定 对上溢用无穷大表示 同时规定: 同时规定 无穷大+任何数 无穷大 无穷大 任何数=无穷大 任何数 任何有限数÷ 无穷大 任何有限数÷0=无穷大 任何有限数÷无穷大=0 任何有限数÷无穷大 无穷大÷无穷大=NaN 无穷大÷无穷大 NaN(Not A Number)
。 这样IEEE754有5种类型浮点数据 如下表 种类型浮点数据,如下表 这样 有 种类型浮点数据 如下表:
根据IEEE 754标准 符号位也是 “ 0” 代 标准,符号位也是 根据 标准 符号位也是“ ” 表正数;“ ”代表负数. 表正数 “1”代表负数 阶码用移码表示, 尾数规格化形式,但格 阶码用移码表示 , 尾数规格化形式 但格 式如下:1.XXX…X。由于最高位总是 因此省 式如下 。由于最高位总是1,因此省 称隐藏位(临时实数则不隐藏 略,称隐藏位 临时实数则不隐藏 称隐藏位 临时实数则不隐藏). 尾数比规格化表示大一倍,而阶码部分则 尾数比规格化表示大一倍 而阶码部分则 比一般小1,即 移 比一般小 即[E]移=2n+E-1=127+E 这样,尾数与通常意义的尾数的含义不一 这样 尾数与通常意义的尾数的含义不一 为了区别,754 中的尾数称为有效数 中的尾数称为有效数. 致,为了区别 为了区别
例11.2 把浮点数 1100000111001001000000000000转换成十 转换成十 进制数。 进制数。 解: 1、把浮点数 、 1100000111001001000000000000 分割成三部分,可得: 分割成三部分,可得: 符号位是1, 符号位是 , 阶码 是10000011, , 尾数 是1001001000000000000
根据IEEE 754国际标准,常用的浮点数有两 国际标准, 根据 国际标准 种格式: 种格式: (1) 单精度浮点数 位),阶码 位,尾数 单精度浮点数(32位 ,阶码8位 尾数24 内含1位符号位 位(内含 位符号位 。 内含 位符号位)。 (2) 双精度浮点数(64位),阶码11位,尾数53 双精度浮点数 位 ,阶码 位 尾数 内含1位符号位 位(内含 位符号位 。 内含 位符号位)。 (3) 临时浮点数 位),阶码 位,尾数 位 临时浮点数(80位 ,阶码15位 尾数65位 (内含 位符号位 。 内含1位符号位 内含 位符号位)。