IEEE 754 浮点数加减运算 |
您所在的位置:网站首页 › 浮点数和整数相加是什么 › IEEE 754 浮点数加减运算 |
电子科技大学 - 计算机组成原理 小数的十进制和二进制转换 移码定义:[X]移 = X + 2n ( -2n ≤ X < 2n ) X为真值,n为整数的位数 数值位和X的补码相同,符号位与补码相反 舍入方法 0舍1入 保留4位尾数: 0 00100 -> 0 0010 /* **0直接舍去 */ 1 00101 -> 1 0011 /* **1进位 */ 1 11011 -> 1 1110 末位恒置1 保留4位尾数: 0 00100 -> 0 0011 1 00101 -> 1 0011 1 11011 -> 1 1101 IEEE 754 32位单精度 Sign8位阶码 [偏移量为28-1-1 = 127的非标准移码]23位尾数 真值表达式E的取值范围N = (-1)s × 2E-127 × 1.M1到254 64位双精度 Sign11位阶码 [偏移量为211-1-1 =1023的非标准移码]252位尾数 真值表达式E的取值范围N = (-1)s × 2E-1023 × 1.M1到2046为了确保浮点数表示的唯一性,约定 0 ≤ M < 1 各字段的含义( 以单精度为例 ) 规范浮点数1 ≤ E ≤ 254 真值表达式:N = (-1)s × 2E-127 × 1.M,尾数部分隐含开头的1 最小的正规格化数 00000 00010000 0000 0000 0000 0000 000 最大的正规格化数 01111 11101111 1111 1111 1111 1111 111 非规范浮点数E = 0,M ≠ 0 s0000 0000≠ 0真值表达式:N = (-1)s × 2-126 × 0.M,尾数部分不隐含开头的1 最小的正非规格化数 s0000 00000000 0000 0000 0000 0000 001最大的正非规格化数 s0000 00001111 1111 1111 1111 1111 111 浮点数0E = 0,M = 0 s0000 00000000 0000 0000 0000 0000 000有+0.0和-0.0两种零 无穷大E全为1(255),M = 0 正无穷大 01111 11110000 0000 0000 0000 0000 000负无穷大 11111 11110000 0000 0000 0000 0000 000 NaN Not a Number计算sqrt(-1)或∞-∞时会返回NaN E全为1(255),M ≠ 0 s1111 1111≠ 0 为什么要使用127作为偏移量而不是128
上溢:阶码大于机器的最大阶码,不能继续运算,一般要进行中断处理 下溢:阶码小于最小阶码,当做零处理,机器可以继续运算 规格化浮点数当尾数结果为00.0x…x 或 11.1x…x 尾数左移,阶码减1,直到尾数形式为00.1x…x 或 11.0x…x 当尾数结果为01.x…x 或 10.x…x 尾数右移,阶码加1,尾数形式变为00.1x…x 或 11.0x…x 阶码加减设: AE、BE为阶码,CE为结果阶码 [ AE + BE ]移 = ( AE + BE ) + 127 = ( AE + 127 ) + ( BE + 127 ) - 127 = [ AE ]移 + [ BE ]移 -127 = [ AE ]移 + [ BE ]移 + [ -127 ]补 = [AE]移 + [BE]移 + 129 = ( [AE]移 + [BE]移 + 129 ) mod 28 [ AE - BE ]移 = ( AE - BE ) + 127 = ( AE + 127 ) - ( BE + 127 ) + 127 = [ AE ]移 - [ BE ]移 + 127 = ( [AE]移 - [BE]移 + 127 ) mod 28 浮点数加减设: A = 2AE × AM,B = 2BE × BM AE、BE为阶码,AM、BM为尾数 右移时: 0舍1入末位恒置1 例题x = 0.5, y = 0.4375, 32位单精度表示,求x + y和x - y 转换为二进制 0.5 x 2 = 1.0 取10.1 → 1.0 x 2 -1 [x]浮 = 00111 11100000 0000 0000 0000 0000 000-1 + 127 = 126 0.4375 x 2 = 0.875 取00.8750 x 2 = 1.750 取10.7500 x 2 = 1.500 取10.5000 x 2 = 1.000 取1-0.0111 → 1.11 x 2-2 [y]浮 = 10111 11011100 0000 0000 0000 0000 000-2 + 127 = 125 求阶差(0111 1110 - 0111 1101 + 127)mod 28 = 1 y向x对齐 y = 0.111 x 2-1 [y]浮 = 10111 11101110 0000 0000 0000 0000 000 尾数加减 +00.0000 0000 0000 0000 0000 00000.0010 0000 0000 0000 0000 00000.0010 0000 0000 0000 0000 000结果为00.0x…x,左规 得到1.0… x 2-4 结果 = 0.0625 00111 10110000 0000 0000 0000 0000 000-4 + 127 = 123 -00.0000 0000 0000 0000 0000 00000.1110 0000 0000 0000 0000 00000.1110 0000 0000 0000 0000 000结果 = 0.9345 00111 11101110 0000 0000 0000 0000 000 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |