"该资源是2023年关于计算机组成与结构的第十一讲,主要讲解浮点数的加法和减法运算。由教师覃志东教授,内容涉及浮点数的规则化表示、0操作数检查、对阶、尾数运算以及结果的规格化和舍入处理。"
在计算机科学中,浮点数运算对于处理大量数值计算至关重要,因为它们能够表示非常大或非常小的数值,并保持一定的精度。浮点数通常由三部分组成:符号位、指数(阶码)和尾数。在这个讲义中,我们将关注浮点数的加法和减法运算。
首先,执行0操作数检查是为了优化运算过程。如果发现任一操作数为0,可以直接得出运算结果,无需进行后续复杂步骤,从而节省计算时间。
接下来是对阶操作,目的是保证两个浮点数的尾数部分可以正确相加或相减。对阶是通过调整较小数的阶码使其等于较大数的阶码来实现的。阶码的调整通常是通过右移尾数和相应的增加阶码来完成,始终让小阶码向大阶码看齐,以避免丢失高位数据。右移时,每移动一位,阶码加1,直到两数的阶码相等。这样做的原因是,如果向小阶码对齐,会导致尾数左移,可能会丢失高位数据,而向大阶码对齐只会丢失低位数据,通常对精度影响较小。
然后是尾数的加减运算。对阶完成后,两个浮点数的阶码相同,可以按照定点数的加减运算规则处理尾数。如果求和,直接相加;如果求差,减数的尾数需变补后与被减数的尾数相加。这个阶段可能涉及到溢出问题,需要根据溢出情况进行处理。
最后一步是结果的规格化和舍入处理。如果运算结果不是规则化的浮点数(即尾数的绝对值不在1/2到1之间),需要进行规格化,通常通过左移或右移尾数来实现。同时,还要根据舍入策略处理尾数的额外位,以确保最终结果的精度。
举例来说,假设我们有两个浮点数x和y,经过对阶后进行加法或减法运算,如果在尾数运算后得到的结果不满足规则化条件,那么我们需要通过移动小数点来规格化它,同时可能需要考虑是否需要进行舍入。在补码表示中,只有当尾数满足特定形式(1/2≤|M|<1)时,浮点数才被认为是规则化的。
浮点数的加法和减法运算涉及多个步骤,包括0操作数检查、对阶、尾数运算以及结果的规格化和舍入,这些步骤共同保证了浮点运算的正确性和精度。理解这些概念对于编写高效和精确的数值计算代码至关重要。