计算机浮点运算的尾数处理
2022-06-15
来源:知库网
总第59期 湖南广播电视大学学报 2014年第3期 Sum NO.59 Journal ofHunan Radio&Television University No.3.2014 计算机浮点运算的尾数处理 柴晓东 (黄河科技学院国际学院,河南郑州450063) 内容摘要:浮点数在本质上仍然是以定点数表现出来的,通过浮点数中的指数使数据的表示范围得到扩展。浮点运算的尾数 处理包括规格化、舍入处理和溢出处理。规格化就是使尾数部分最高有效位是1。舍入处理就是按照一定的规则确定一致的位数, 然后舍去某些数字后面多余的尾数。溢出就是计算结果大于寄存器或内存所能储存或表示的能力。 关键词:浮点数;规格4L;尾数 中图分类号:TP306.2文献标识码:A文章编号:1009—5152(2014)03—0079—03 一、计算机浮点运算 化处理、舍入处理以及溢出处理,都属于尾数处理部 计算机中的浮点数是小数点的位置不固定,可以 分。 浮动的数据。浮点数的引入,不仅扩大了数据的表示 二、规格化处理 范围,同时也提高数据的分辨精度。浮点数的表示方 浮点数进行运算后,若不对浮点数的表示做出 法类似于十进制科学标识法,就是用符号、一串有效 明确规定,同一个浮点数的表示就不是惟一的[2】。为 数字(通常称作尾数)以及对应于比例因子中隐含基 了充分利用尾数的位数来表示更多的有效数字,以 数的指数来表示一个数 浮点数可表示为:N=2E・M。 提高数据的分辨精度,通常采用浮点数规格化形式。 其中E是阶码,常用移码表示,它决定了浮点数的表 规格化就是将尾数的绝对值限定在某个范围内,使 示范围。M是尾数,是定点纯小数,它给出了有效数 尾数部分的绝对值尽可能以最大值的形式出现。规 字的位数,决定了浮点数的分辨精度。 格化浮点数的尾数应满足条件:0.5≤I M l<1。 计算机中浮点数的加减运算步骤主要有:对阶、 (一)原码、补码的规格化 尾数运算、规格化处理、舍入处理以及溢出处理。对 浮点数规格化的表示形式与尾数采用何种编码 阶就是通过移动尾数,使要进行加减运算的两个浮 有关。 点数的阶码相等。尾数运算就是将对阶后的浮点数 当尾数用原码表示时,若0≤M,尾数规格化形 尾数,按照运算规则,进行求和运算。规格化处理就 式为:M=0.1XX…XX。若0>M,尾数规格化形式为: 是将运算结果通过一定的方法,变换成统一的标准 M:1.1XX…XX。其中x为0或1,以下相同。即当尾 格式。舍入处理就是根据运算要求,对运算结果中, 数为正数时,其规格化形式要求,尾数小数点后第一 多出保留位的数值进行丢弃或进位处理。溢出处理 位的值为1;当尾数为负数时,尾数小数点后第一位 就是对运算结果中,可能产生的阶码溢出,或尾数溢 的值为1。 出进行相应的处理。在以上运算步骤中,尾数的规格 当尾数用补码表示时,若0≤M,尾数规格化形 收稿日期:2O14—05—20 作者简介:柴晓东(1980一),男,黄河科技学院教师。 ——79—— 式为:M=0.1XX…XX。若0>M,尾数规格化形式为: 同。根据原码的规格化方法,尾数小数点后第一位的 M=1.0XX…XX。即当尾数为正数时,其规格化形式 值为1,规格化后,尾数M的最高位应该是1。对于 要求,尾数小数点后第一位的值为1;当尾数为负数 32位浮点数,尾数M的范围是0 22位,规格化后, 时,尾数小数点后第一位的值为0。 尾数M最高位应该为I,即第22位应该为1。对于 综上所述,浮点数的规格化,其实质就是为了保 64位浮点数,尾数M的范围是0 51位,规格化后, 证尾数所对应的真值小数点后第一位的值为1。当浮 第51位应该是l。因浮点数规格化后,尾数M最高 点加减运算的结果不是规格化的形式时,需要进行 有效位固定为I,即尾数M最左位固定为1,IEEE754 左规或者右规将它转化为规格化形式。双符号数补 标准将这个1缺省存储,即不存储,而隐藏在二进制 码规格化形式为:M=00.iXX…XX或M=11.OXX… 小数点的左边。这样M域中存储的23位和52位实 XX。规格化方法是: 际上只表示了尾数的小数部分,即小数点右方的各 1.若加减运算结果的两个符号位不同,如01. 位。 XXX…XX或10.XXX…XX,表明运算结果发生了溢 图2所示为IEEE754标准32位浮点数的规格 出,此时需将尾数右移1位(小数点左移1位),阶码 化。其中(a)图表示是一个非规格化数+0.0001 101… 加1,即进行右规。例如,若加减运算结果是 ×2 的IEEE754标准格式,其中阶码用移码表示。阶 01.110111,阶码为10,规格化需要右规1位,阶码加 码原始是9,变为移码后为7+127,二进制为 1,规格化后的形式为O0.1l10111,阶码变为11;若加 100001 10。尾数域的数据为0.0001 101…。将尾数 减运算结果是1O.110111,阶码为l0,规格化需要右 0.0001101…规格化,按照原码规格化方法,左规3 规1位,阶码加1,规格化后的形式为11.0110111,阶 位,规格化后变为0.1101…,阶码减3,变为4。由于 码变为1l。 IEEE754标准规定,尾数域最高位隐藏不存储,即小 2.若加减运算结果的两个符号位相同,但最高 数点左边应该为1,则需要对规格化后的值再次进行 数值位与符号位相同,如O0.OXX…XX或1 1.1XX… 变换,I ̄P4-,数点向右再次移动1位,变为1.101…,阶 XX,此时需将尾数左移(小数点右移),直至转化为 码再减1,变为3。阶码用移码表示为3+127,二进制 00.1XX…XX或1 1.0XX…XX的形式,阶码减去尾数 表示形式为10000010。尾数域数据为101…。fb)图表 左移的位数,即进行左规。例如,若加减运算结果是 示的即为规格化后的IEEE754标准格式。其中最高 O0.010111,阶码为l1,则规格化需要左规1位,阶码 位0是符号位,表示“+”。 减1,规格化后的形式为O0.101l10,阶码变为10;若 事实上,IEEE754标准浮点数规格化后,尾数域 加减运算结果是11.1101l1,阶码为11,则规格化需 的数据只是小数点后的数据,实际上尾数表示范围比 要左规2位,阶码减2,规格后的化形式为 实际存储的多一位,这一位就是小数点前的一位1。 11.O11100,阶码变为01。 移码格式的指数 ~一 ~_、 (二)IEEE754标准浮点数的规格化 l!i !竺! !} : J为了便于软件的移植,浮点数的表示形式应该 (尾数小数点左垃没有隐灏1) 有统一的标准。IEEE(Institute of Electrical and 表示的值为+o 000110l…×2 Electronics Engineers)提出了IEEE754标准。IEEE754 (a)朱规格化值 标准规定基数为2,符号s用0或1表示,阶码E用 移码表示,尾数M用原码表示。如图1所示为 表示的值为+l101…X2 fb)规格化值 IEEE754标准32位浮点数和64位浮点数的格式。 图2 IEEE754标准32位浮点数规格化 三、舍入处理 在浮点运算中,在执行右规或对阶时,尾数低位 上的数值会因为超出机器的允许位数而被移掉,从 而使数值的精度受到影响。为了减小数据的误差,需 要对移掉的数据进行舍人处理。计算机中常用的舍 图1 IEEE754浮点数格式 入方法有两种:四舍五入法和截断处理法。 对于IEEE754标准的浮点数,由于其尾数M用 (一)四舍五入法 原码表示,因此,其规格化方法与原码规格化方法相 四舍五入法类似于十进制的四舍五人,即尾数 一80一 超出规定的保留位的多余位数值,若大于规定的保 则保持不变。例如,若要进行舍人处理的数据为 留位的最低有效位值的一半时,则需要进位,即在尾 0.11011001,要求保留位为4位。则进行舍人处理的 数保留位的最低有效位上加1。若超出规定的保留位 多余数据为1001,直接将多余位1001舍去即可。舍 的多余位数的值,小于规定的保留位的最低有效位 人处理结果为0.1 101。截断处理方法操作简单,但误 值的一半时,则直接舍去。例如,若要进行舍人处理 差相对较大,影响结果的精度。 的数据为0.1 101 1001,要求保留位为4位。则进行舍 四、溢出处理 入处理的多余数据为1001,由于1001大于1000,因 在浮点运算过程中,需要检测计算结果是否发 此需要向高位进位。将0.1101的末位直接加1,即 生溢出。如果溢出,需要进行溢出处理。溢出有两种, 0.1101+0.0001=0.1110,舍人处理结果为0.1110;若要 一种是阶码溢出,另一种是尾数溢出。 进行舍人处理的数据为0.11010001,要求保留位为4 阶码的溢出有两种情况,一种是两个同符号数 位。则进行舍人处理的多余数据为0001,由于0001 据相加,由于一个数据的绝对值很大,已经使正阶码 小于1000,因此需要舍去。直接将0001舍去,保持其 达到最大值,两数相加规格化后,阶码需要增加,这 它数值不变,舍入处理结果为0.1 101。 时发生阶码上溢。另一种是两个不同符号数据相加, 对于多余位刚好等于有效位值的一半时,分两 由于两个数据的绝对值很小,两数相加规格化后,阶 种情况处理:当规定的保留位的最低有效位为0时, 码需要减少,这时发生阶码下溢[31。 则直接舍去;若规定的保留位的最低有效位为1时, 尾数的溢出也有两种情况,一种是两个同符号 则向高位进一位使其变为0。例如,若要进行舍入处 数据相加,出现相加结果最高位向上进位,需要将尾 理的数据为0.1 1001000,要求保留位为4位。保留位 数右移,阶码加1。即对计算结果进行右规格化处理。 的最低有效位为0,则直接舍去多余位1000。舍入处 另一种是两个数据运算后,数据长度超出了要求的 理结果为0.1100。若要进行舍人处理的数据为 数据长度,这时需要对计算结果进行舍入处理。由于 0.11011000,要求保留位为4位。保留位的最低有效 浮点数的表示范围很广,在实际应用中,阶码的溢出 位为1,则向保留位的最低位加1,即0.1101+0.0001 很少出现,但尾数的溢出出现较多。 =0.1110,舍人处理结果为0.1110。 四舍五入法的舍入结果最接近于被舍人处理的 参考文献: 数据,而且是无偏近似。但该方法要求一次加法运 【1]Carl Hamacher等.计算机组成【M].北京:机械工业出版社, 算,有可能需要对舍入结果再次进行规格化。这种舍 2004. 入方式是IEEE浮点标准舍入处理的默认模式。 【2】白中英.计算机组成原理(第四版)【M].北京:科学出版社, 2008. (二)截断处理法 截断处理法是一种简单的方法,直接将超出规 【3]罗克露,刘辉等.计算机组成原理(第二版)【M].北京:电子工 业出版社,2010. 定的保留位的多余位舍去,而剩余的规定的保留位 On the Mantissa Processing ofComputer Floating Point Arithmetic CHAI Xiao.dong Abslr ̄-t:The idea of floating-point representation over intrinsically integer fixed-point numbers,which consists purely of signiifcand,is that expanding it with the exponent component achieves greater range.The mantissa handlnig including normalization, rounding rules and overflow handling.The floating point will be normalized such that the most signiifcant bit will be a one.Rounding handling aims to turn a given value into another value witt:a specified number of signiifcant digits.Overlfow is that occurs when a calculation produces a result htat is greater than what a given register Can store or represent. K盯wl砌s:floating point;normalization;mantissa 一81—