前言: 运算过程:对阶、尾数求和、规格化、舍入、溢出判断
在计算机中,加减法运算用补码实现。 算术运算的常识:两个浮点数如果要进行加减法运算,它们的阶或者指数必须相等。
补码加法
提高浮点数的表示精度,把计算机的提供的能够表示数据的硬件资源尽可能有效的利用起来。
左规 尾数左移一位,阶码减1,直到数符和第一数位不同为止(机器数表示方式是补码)。右规(尾数的绝对值太大时,右规) 尾数右移一位,阶码加1。 当尾数溢出( >1 )时,需要右规。 是否溢出,可以通过两位的符号位得出: 即尾数出现01.xx…xx或10.xx…xx(两位符号位不同)舍入,是指数据的长度超过了计算机当中存储数据的物理器件所保存的数据长度。低位部分就要进行处理,保证数据能够以比较精确的精度保存在计算机当中。
在对阶和右规过程中,可能出现尾数末位丢失,引起误差。为了尽可能减小误差,就需要考虑舍入。
舍入的方法:
截断法 将移出的数据一律舍去。该方法简单,很常用。但是影响精度。
0舍1入法 移掉的是1,则尾数末尾加1,移掉的是0,就不加。
例题:如果采用0舍1入法进行舍入处理,则0.01010110011舍去最后一位后,结果为()。 A.0.0101011001 B.0.0101011010 C.0.0101011011 D.0.0101011100 分析:0舍1入就相当于十进制舍入方法中的4舍5入,当这个数舍去最后一位时,这个数如果是0就写0, 如果是1,那么尾数末尾加一。即B.0.0101011010
(末位)恒置“1”法 将要保留的末位数据恒置1,无论右移掉的是1还是0,末位是1还是0。例题1:x=0.1101✖201 ; y=(-0.1010)✖211。求x+y 解:先写出x和y的补码表示形式 [x]补码=00,01;00.1101 [y]补码=00,11;11.0110
对阶
①求阶差: 11,10转化成十进制数→(-2) 所以根据小阶向大阶看齐,x的阶码向y的阶码看齐,并且x的阶码要加2,尾数要右移2位。 ②对阶 对阶后的[x]补’=00,11;00.0011
尾数求和
规格化 [x+y]补的尾数是11.1001,符号位是1,尾数的最高位也是1,补码形式表示。 采用左规的方式,使数据规格化:把尾数左移一位,同时阶码减一。 左规之后的数据:00,10;11.0010 得到结果为:x+y=(-0.1110)✖210
例题2: x=0.1101✖210,y=0.1011✖201,求x+y(除阶符、数符外,阶码取3位,尾数取6位) 解: [x]补=00,010;00.110100 [y]补=00,001;00.101100 ①对阶 小阶向大阶看齐,y向x看齐,[y]补’=00,010;00.010110 ②尾数求和 00.110100+00.010110=01.001010
③右规 尾数溢出需要右规,位数右规一位,尾数等于00.100101,同时阶码要加一 [x+y]补=00,011;00.100101 x+y=0.100101✖211