浮点数加减运算

如果一个二进制浮点数的尾数的绝对值小于1并且大于等于0.5,(1>|尾数|≥0.5),那么这个二进制浮点数就是一个规格化的浮点数。

用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有一个符号位时:

规格化的浮点数的尾数是正数时应该是 0 . 1 X X X X X X X X X ……的形式

(0表示符号位,X 表示0或1中的任意一个数值)

规格化的浮点数的尾数是负数时应该是 1 . 0 X X X X X X X X X ……的形式

(1表示符号位,X 表示0或1中的任意一个数值)

用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有两个符号位时:

规格化的浮点数的尾数是正数时应该是 00 . 1 X X X X X X X X X ……的形式

(00表示符号位,X 表示0或1中的任意一个数值)

规格化的浮点数的尾数是负数时应该是 11 . 0 X X X X X X X X X ……的形式

(11表示符号位,X 表示0或1中的任意一个数值)

两个浮点数加减法的计算结果必须规格化,如果不是规格化的数,则要通过修改阶码并同时左移或者右移尾数,使其变为规格化的数。

[例] x =2010×0.11011011,y=2100×-0.10101100,浮点数均以补码表示,阶码采用双符号位,尾数采用单符号位。 求x+y 。

答:

(步骤1)转换成题目中要求的浮点数格式:

浮点数x =2010×0.11011011的阶码是+010,尾数是+0.11011011

浮点数均以补码表示,所以阶码以补码表示,并且阶码采用双符号位,

[x]浮的阶码=00010(00是两个符号位)

浮点数均以补码表示,所以尾数以补码表示,并且尾数采用单符号位,

[x]浮的尾数=0.11011011(0是1个符号位)

浮点数y=2100×-0.10101100的阶码是+100,尾数是 - 0.10101100

浮点数均以补码表示,所以阶码以补码表示,并且阶码采用双符号位,

[y]浮的阶码=00100(00是两个符号位)

浮点数均以补码表示,所以尾数以补码表示,并且尾数采用单符号位,

[y]浮的尾数=1.01010100(1是1个符号位)

(y=2100×-0.10101100中10101100先取反变为01010011,再加1后变为01010100)

[x] 浮=00010, 0.11011011;

[y] 浮=00100, 1.01010100;

(步骤2)阶数对齐:

x 的阶码是+2(二进制00010),y 的阶码是+4(二进制00100),阶码小的向阶码大的数对齐, x的阶码向y 的阶码对齐。

x 的阶码加2,从00010变成00100 ,此时x 的阶码与y 的阶码相等。

[x]浮尾数0. 11011011右移两位(小数点不动,左边添加两个符号位,因为x 的尾数是正数,所以添加的两个符号位是0) ,

[x]浮尾数变为0. 00110110(11)

0. 11011011(右移两位,小数点不动,左边添加两个符号位)

0. 00110110(11)

因为x 的阶码与y 的阶码相等,都是00010,所以把x 的尾数与y 的尾数相加。

(步骤3)尾数相加

0. 0 0 1 1 0 1 1 0 (11)

+ 1. 0 1 0 1 0 1 0 0

————————————————

1. 1 0 0 0 1 0 1 0 (11)

注意:

因为y 的尾数没有对应的位数,所以(11)直接落下来进入结果;

x 尾数的符号位0与y 尾数的符号位1同样参与到加法运算。

(步骤4)判断计算结果是否溢出:

当计算结果的尾数只有一个符号位时,符号位与小数点后第一位相等,则没有溢出;如果符号位与小数点后第一位不等,则产生溢出。

一旦发生溢出,计算结果的尾数右移一位,同时阶码加一。

本题中计算结果的尾数是1. 1 0 0 0 1 0 1 0 (11),其中符号位是1,小数点后第一位是1 ,二者相等,没有溢出。

(步骤5)判断计算结果是否满足规格化:

用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有一个符号位时:

规格化的浮点数的尾数是正数时应该是 0 . 1 X X X X X X X X X ……的形式 (0表示符号位,X 表示0或1中的任意一个数值)

规格化的浮点数的尾数是负数时应该是 1 . 0 X X X X X X X X X ……的形式 (1表示符号位,X 表示0或1中的任意一个数值)

本题中计算结果的尾数是1. 1 0 0 0 1 0 1 0 (11),不满足规格化的浮点数的尾数是负数时应该是 1 . 0 X X X X X X X X X ……的形式,因此不是规格化的浮点数。

为了规格化,本题中计算结果的尾数是1. 1 0 0 0 1 0 1 0 (11),左移1位,同时阶码减

一。(只能左移,而且左移1位就可以了)

原来的计算结果

[x+y] 浮=00100, 1. 1 0 0 0 1 0 1 0 (11);

规格化后(尾数左移1位,小数点不动,右边添加一个0;同时阶码减一)

[x+y] 浮=00011, 1 . 0 0 0 1 0 1 0 1 (10);

尾数1 . 0 0 0 1 0 1 0 1,满足规格化的浮点数的尾数是负数时应该是 1 . 0 X X X X X X X X X ……的形式,因此是规格化的浮点数。

(步骤6)计算结果舍入处理

就近舍入(0舍1入) 法:

类似”四舍五入”, 丢弃的最高位为1, 进1;本题丢弃的是(10),最高位为1,所以向上进1位

则有

1 . 0 0 0 1 0 1 0 1

+ 1

────────────────

1. 0 0 0 1 0 1 1 0

结果为[x+y] 浮=00011, 1 . 0 0 0 1 0 1 1 0;

直接舍弃法:

本题 (10)被直接舍弃。结果为[x+y] 浮=00011, 1 . 0 0 0 1 0 1 0 1;

35[例] x =8,y=16,用变形补码计算x+y,并指出

结果是否溢出。

答:

(步骤1)转换成题目中要求的浮点数格式:

3-3-3-1x==(3)10×2=(11)2×2=(0.11)2×2 8

5-4-4-1y==(5)10×2=(101)2×2=(0.101)2×2 16

( )10表示十进制数,( )2表示二进制数。

浮点数x=(0.11)2×2-1的阶码是-1,尾数是+0.11。变形补码要求本题中阶码采用补码形式并且两个符号位;尾数采用补码形式并且两个符号位。

[x]浮的阶码=11111(11是两个符号位;1对应二进制是001,001取反后是110,110

再加1变成111)

[x]浮的尾数=00.11000000(00是两个符号位;题目没写尾数几位,自己假定尾数10

位)

浮点数y=(0.101)2×2-1的阶码是-1,尾数是+0.101。

[y]浮的阶码=11111(11是两个符号位;1对应二进制是001,001取反后是110,110

再加1变成111)

[y]浮的尾数=00.10100000(00是两个符号位;题目没写尾数几位,自己假定尾数10

位)

[x] 浮=11111, 00.11000000;

[y] 浮=11111, 00.10100000;

(步骤2)阶数对齐:

x 的阶码是-1(二进制11111),y 的阶码是-1(二进制11111)

因为x 的阶码与y 的阶码相等,都是11111,所以不用移位处理,直接把x 的尾数与y 的尾数相加。

(步骤3)尾数相加

00.11000000

+ 00.10100000

————————————————

01.01100000

注意:

x 尾数的符号位00与y 尾数的符号位00同样参与到加法运算。

(步骤4)判断计算结果是否溢出:

当计算结果的尾数有两个符号位时,两个符号位相等,则没有溢出;如果两个符号位不等,则产生溢出。一旦发生溢出,计算结果的尾数右移一位,同时阶码加一。

本题中计算结果的尾数是01.01100000,其中一个符号位是0,另外一个符号位是1,两个符号位不等,则产生溢出。

计算结果的尾数01.01100000右移一位(小数点不动,左面添加最左边的符号位0),变成00. 10110000(0);同时阶码加一,从11111变成00000。

(步骤5)判断计算结果是否满足规格化:

用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有两个符号位时:

规格化的浮点数的尾数是正数时应该是 00 . 1 X X X X X X X X X ……的形式 (00表示符号位,X 表示0或1中的任意一个数值)

规格化的浮点数的尾数是负数时应该是 11 . 0 X X X X X X X X X ……的形式 (11表示符号位,X 表示0或1中的任意一个数值)

本题中计算结果的尾数是00. 10110000(0),满足规格化的浮点数的尾数是正数时应该是 00 . 1 X X X X X X X X X ……的形式。

(步骤6)计算结果舍入处理

因为舍弃的尾数是(0),所以无论哪种舍弃方法都会得到同样的结果。原因是舍弃0对结果本身无影响。因此(0)可以直接舍弃。

结果为[x+y] 浮=00000, 00. 10110000;

(步骤7)验证结果正确性 x+y=+356511-4-40=+== (11)10×2=(1011)2×2=(0.1011)2×2 816161616

浮点数[x+y] =(0.1011)2×20的阶码是0,尾数是+0.1011。变形补码要求本题中阶码采用补码形式并且两个符号位;尾数采用补码形式并且两个符号位。

[x+y]浮的阶码=00000(00是两个符号位;0对应二进制是000)

[x+y]浮的尾数=00.10110000(00是两个符号位;题目没写尾数几位,自己假定尾数10

位)

步骤7与步骤6结果一致,所以步骤1到步骤6都是正确的。

53[例] x =64,y=32,用变形补码计算x+y,并指出

结果是否溢出。

答:

(步骤1)转换成题目中要求的浮点数格式:

x=

y=1=(1)10×2-6=(1)2×2-6=(0.1)2×2-5 647=(7)10×2-5=(111)2×2-5=(0.111)2×2-2 32

( )10表示十进制数,( )2表示二进制数。

浮点数x=(0.1)2×2-5的阶码是-5,尾数是+0.1。变形补码要求本题中阶码采用补码形式并且两个符号位;尾数采用补码形式并且两个符号位。

[x]浮的阶码=11011(11是两个符号位;5对应二进制是101,101取反后是010,010

再加1变成011)

[x]浮的尾数=00.10000000(00是两个符号位;题目没写尾数几位,自己假定尾数10

位)

浮点数y=(0.111)2×2-2的阶码是-2,尾数是+0.111。

[y]浮的阶码=11110(11是两个符号位;2对应二进制是010,010取反后是101,101

再加1变成110)

[y]浮的尾数=00.11100000(00是两个符号位;题目没写尾数几位,自己假定尾数10

位)

[x] 浮=11011, 00.10000000;

[y] 浮=11110, 00.11100000;

(步骤2)阶数对齐:

x 的阶码是-5(二进制11011),y 的阶码是-2(二进制11110),阶码小的向阶码大的数对齐, x的阶码向y 的阶码对齐。

x 的阶码加3,从-5(二进制11011)变成-2(二进制11110),此时x 的阶码与y 的阶码相等。

[x]浮尾数00.10000000右移三位(小数点不动,左边添加三个符号位,因为x 的尾数符号位是0,所以添加的三个符号位是000)。

[x]浮尾数变为00.00010000(000)

因为移位后x 的阶码与y 的阶码相等,都是11110,所以把x 的尾数与y 的尾数相加。

(步骤3)尾数相加

00.00010000(000)

+ 00.11100000

————————————————

00.11110000(000)

注意:

因为x 的尾数没有对应的位数,所以(000)直接落下来进入结果;

x 尾数的符号位00与y 尾数的符号位00同样参与到加法运算。

(步骤4)判断计算结果是否溢出:

当计算结果的尾数有两个符号位时,两个符号位相等,则没有溢出;如果两个符号位不等,则产生溢出。一旦发生溢出,计算结果的尾数右移一位,同时阶码加一。

本题中计算结果的尾数是00.11110000(000),其中一个符号位是0,另外一个符号位也是0,两个符号位相,不溢出。

(步骤5)判断计算结果是否满足规格化:

用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有两个符号位时:

规格化的浮点数的尾数是正数时应该是 00 . 1 X X X X X X X X X ……的形式 (00表示符号位,X 表示0或1中的任意一个数值)

规格化的浮点数的尾数是负数时应该是 11 . 0 X X X X X X X X X ……的形式 (11表示符号位,X 表示0或1中的任意一个数值)

本题中计算结果的尾数是00.11110000(000),满足规格化的浮点数的尾数是正数时应该是 00 . 1 X X X X X X X X X ……的形式。

(步骤6)计算结果舍入处理

因为舍弃的尾数是(000),所以无论哪种舍弃方法都会得到同样的结果。原因是舍弃0对结果本身无影响。因此(000)可以直接舍弃。

结果为[x+y] 浮=11110, 00.11110000;

(步骤7)验证结果正确性 x+y=1711415+=+== (15)10×2-6=(1111)2×2-6=(0.1111)2×2-2 6432646464

浮点数[x+y] =(0.1111)2×2-2的阶码是-2,尾数是+0.1111。变形补码要求本题中阶码采用补码形式并且两个符号位;尾数采用补码形式并且两个符号位。

[x+y]浮的阶码=11110(00是两个符号位;2对应二进制是010,010取反后是101,

101再加1变成110)

[x+y]浮的尾数=00.11110000(00是两个符号位;题目没写尾数几位,自己假定尾数10

位)

步骤7与步骤6结果一致,所以步骤1到步骤6都是正确的。

如果一个二进制浮点数的尾数的绝对值小于1并且大于等于0.5,(1>|尾数|≥0.5),那么这个二进制浮点数就是一个规格化的浮点数。

用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有一个符号位时:

规格化的浮点数的尾数是正数时应该是 0 . 1 X X X X X X X X X ……的形式

(0表示符号位,X 表示0或1中的任意一个数值)

规格化的浮点数的尾数是负数时应该是 1 . 0 X X X X X X X X X ……的形式

(1表示符号位,X 表示0或1中的任意一个数值)

用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有两个符号位时:

规格化的浮点数的尾数是正数时应该是 00 . 1 X X X X X X X X X ……的形式

(00表示符号位,X 表示0或1中的任意一个数值)

规格化的浮点数的尾数是负数时应该是 11 . 0 X X X X X X X X X ……的形式

(11表示符号位,X 表示0或1中的任意一个数值)

两个浮点数加减法的计算结果必须规格化,如果不是规格化的数,则要通过修改阶码并同时左移或者右移尾数,使其变为规格化的数。

[例] x =2010×0.11011011,y=2100×-0.10101100,浮点数均以补码表示,阶码采用双符号位,尾数采用单符号位。 求x+y 。

答:

(步骤1)转换成题目中要求的浮点数格式:

浮点数x =2010×0.11011011的阶码是+010,尾数是+0.11011011

浮点数均以补码表示,所以阶码以补码表示,并且阶码采用双符号位,

[x]浮的阶码=00010(00是两个符号位)

浮点数均以补码表示,所以尾数以补码表示,并且尾数采用单符号位,

[x]浮的尾数=0.11011011(0是1个符号位)

浮点数y=2100×-0.10101100的阶码是+100,尾数是 - 0.10101100

浮点数均以补码表示,所以阶码以补码表示,并且阶码采用双符号位,

[y]浮的阶码=00100(00是两个符号位)

浮点数均以补码表示,所以尾数以补码表示,并且尾数采用单符号位,

[y]浮的尾数=1.01010100(1是1个符号位)

(y=2100×-0.10101100中10101100先取反变为01010011,再加1后变为01010100)

[x] 浮=00010, 0.11011011;

[y] 浮=00100, 1.01010100;

(步骤2)阶数对齐:

x 的阶码是+2(二进制00010),y 的阶码是+4(二进制00100),阶码小的向阶码大的数对齐, x的阶码向y 的阶码对齐。

x 的阶码加2,从00010变成00100 ,此时x 的阶码与y 的阶码相等。

[x]浮尾数0. 11011011右移两位(小数点不动,左边添加两个符号位,因为x 的尾数是正数,所以添加的两个符号位是0) ,

[x]浮尾数变为0. 00110110(11)

0. 11011011(右移两位,小数点不动,左边添加两个符号位)

0. 00110110(11)

因为x 的阶码与y 的阶码相等,都是00010,所以把x 的尾数与y 的尾数相加。

(步骤3)尾数相加

0. 0 0 1 1 0 1 1 0 (11)

+ 1. 0 1 0 1 0 1 0 0

————————————————

1. 1 0 0 0 1 0 1 0 (11)

注意:

因为y 的尾数没有对应的位数,所以(11)直接落下来进入结果;

x 尾数的符号位0与y 尾数的符号位1同样参与到加法运算。

(步骤4)判断计算结果是否溢出:

当计算结果的尾数只有一个符号位时,符号位与小数点后第一位相等,则没有溢出;如果符号位与小数点后第一位不等,则产生溢出。

一旦发生溢出,计算结果的尾数右移一位,同时阶码加一。

本题中计算结果的尾数是1. 1 0 0 0 1 0 1 0 (11),其中符号位是1,小数点后第一位是1 ,二者相等,没有溢出。

(步骤5)判断计算结果是否满足规格化:

用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有一个符号位时:

规格化的浮点数的尾数是正数时应该是 0 . 1 X X X X X X X X X ……的形式 (0表示符号位,X 表示0或1中的任意一个数值)

规格化的浮点数的尾数是负数时应该是 1 . 0 X X X X X X X X X ……的形式 (1表示符号位,X 表示0或1中的任意一个数值)

本题中计算结果的尾数是1. 1 0 0 0 1 0 1 0 (11),不满足规格化的浮点数的尾数是负数时应该是 1 . 0 X X X X X X X X X ……的形式,因此不是规格化的浮点数。

为了规格化,本题中计算结果的尾数是1. 1 0 0 0 1 0 1 0 (11),左移1位,同时阶码减

一。(只能左移,而且左移1位就可以了)

原来的计算结果

[x+y] 浮=00100, 1. 1 0 0 0 1 0 1 0 (11);

规格化后(尾数左移1位,小数点不动,右边添加一个0;同时阶码减一)

[x+y] 浮=00011, 1 . 0 0 0 1 0 1 0 1 (10);

尾数1 . 0 0 0 1 0 1 0 1,满足规格化的浮点数的尾数是负数时应该是 1 . 0 X X X X X X X X X ……的形式,因此是规格化的浮点数。

(步骤6)计算结果舍入处理

就近舍入(0舍1入) 法:

类似”四舍五入”, 丢弃的最高位为1, 进1;本题丢弃的是(10),最高位为1,所以向上进1位

则有

1 . 0 0 0 1 0 1 0 1

+ 1

────────────────

1. 0 0 0 1 0 1 1 0

结果为[x+y] 浮=00011, 1 . 0 0 0 1 0 1 1 0;

直接舍弃法:

本题 (10)被直接舍弃。结果为[x+y] 浮=00011, 1 . 0 0 0 1 0 1 0 1;

35[例] x =8,y=16,用变形补码计算x+y,并指出

结果是否溢出。

答:

(步骤1)转换成题目中要求的浮点数格式:

3-3-3-1x==(3)10×2=(11)2×2=(0.11)2×2 8

5-4-4-1y==(5)10×2=(101)2×2=(0.101)2×2 16

( )10表示十进制数,( )2表示二进制数。

浮点数x=(0.11)2×2-1的阶码是-1,尾数是+0.11。变形补码要求本题中阶码采用补码形式并且两个符号位;尾数采用补码形式并且两个符号位。

[x]浮的阶码=11111(11是两个符号位;1对应二进制是001,001取反后是110,110

再加1变成111)

[x]浮的尾数=00.11000000(00是两个符号位;题目没写尾数几位,自己假定尾数10

位)

浮点数y=(0.101)2×2-1的阶码是-1,尾数是+0.101。

[y]浮的阶码=11111(11是两个符号位;1对应二进制是001,001取反后是110,110

再加1变成111)

[y]浮的尾数=00.10100000(00是两个符号位;题目没写尾数几位,自己假定尾数10

位)

[x] 浮=11111, 00.11000000;

[y] 浮=11111, 00.10100000;

(步骤2)阶数对齐:

x 的阶码是-1(二进制11111),y 的阶码是-1(二进制11111)

因为x 的阶码与y 的阶码相等,都是11111,所以不用移位处理,直接把x 的尾数与y 的尾数相加。

(步骤3)尾数相加

00.11000000

+ 00.10100000

————————————————

01.01100000

注意:

x 尾数的符号位00与y 尾数的符号位00同样参与到加法运算。

(步骤4)判断计算结果是否溢出:

当计算结果的尾数有两个符号位时,两个符号位相等,则没有溢出;如果两个符号位不等,则产生溢出。一旦发生溢出,计算结果的尾数右移一位,同时阶码加一。

本题中计算结果的尾数是01.01100000,其中一个符号位是0,另外一个符号位是1,两个符号位不等,则产生溢出。

计算结果的尾数01.01100000右移一位(小数点不动,左面添加最左边的符号位0),变成00. 10110000(0);同时阶码加一,从11111变成00000。

(步骤5)判断计算结果是否满足规格化:

用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有两个符号位时:

规格化的浮点数的尾数是正数时应该是 00 . 1 X X X X X X X X X ……的形式 (00表示符号位,X 表示0或1中的任意一个数值)

规格化的浮点数的尾数是负数时应该是 11 . 0 X X X X X X X X X ……的形式 (11表示符号位,X 表示0或1中的任意一个数值)

本题中计算结果的尾数是00. 10110000(0),满足规格化的浮点数的尾数是正数时应该是 00 . 1 X X X X X X X X X ……的形式。

(步骤6)计算结果舍入处理

因为舍弃的尾数是(0),所以无论哪种舍弃方法都会得到同样的结果。原因是舍弃0对结果本身无影响。因此(0)可以直接舍弃。

结果为[x+y] 浮=00000, 00. 10110000;

(步骤7)验证结果正确性 x+y=+356511-4-40=+== (11)10×2=(1011)2×2=(0.1011)2×2 816161616

浮点数[x+y] =(0.1011)2×20的阶码是0,尾数是+0.1011。变形补码要求本题中阶码采用补码形式并且两个符号位;尾数采用补码形式并且两个符号位。

[x+y]浮的阶码=00000(00是两个符号位;0对应二进制是000)

[x+y]浮的尾数=00.10110000(00是两个符号位;题目没写尾数几位,自己假定尾数10

位)

步骤7与步骤6结果一致,所以步骤1到步骤6都是正确的。

53[例] x =64,y=32,用变形补码计算x+y,并指出

结果是否溢出。

答:

(步骤1)转换成题目中要求的浮点数格式:

x=

y=1=(1)10×2-6=(1)2×2-6=(0.1)2×2-5 647=(7)10×2-5=(111)2×2-5=(0.111)2×2-2 32

( )10表示十进制数,( )2表示二进制数。

浮点数x=(0.1)2×2-5的阶码是-5,尾数是+0.1。变形补码要求本题中阶码采用补码形式并且两个符号位;尾数采用补码形式并且两个符号位。

[x]浮的阶码=11011(11是两个符号位;5对应二进制是101,101取反后是010,010

再加1变成011)

[x]浮的尾数=00.10000000(00是两个符号位;题目没写尾数几位,自己假定尾数10

位)

浮点数y=(0.111)2×2-2的阶码是-2,尾数是+0.111。

[y]浮的阶码=11110(11是两个符号位;2对应二进制是010,010取反后是101,101

再加1变成110)

[y]浮的尾数=00.11100000(00是两个符号位;题目没写尾数几位,自己假定尾数10

位)

[x] 浮=11011, 00.10000000;

[y] 浮=11110, 00.11100000;

(步骤2)阶数对齐:

x 的阶码是-5(二进制11011),y 的阶码是-2(二进制11110),阶码小的向阶码大的数对齐, x的阶码向y 的阶码对齐。

x 的阶码加3,从-5(二进制11011)变成-2(二进制11110),此时x 的阶码与y 的阶码相等。

[x]浮尾数00.10000000右移三位(小数点不动,左边添加三个符号位,因为x 的尾数符号位是0,所以添加的三个符号位是000)。

[x]浮尾数变为00.00010000(000)

因为移位后x 的阶码与y 的阶码相等,都是11110,所以把x 的尾数与y 的尾数相加。

(步骤3)尾数相加

00.00010000(000)

+ 00.11100000

————————————————

00.11110000(000)

注意:

因为x 的尾数没有对应的位数,所以(000)直接落下来进入结果;

x 尾数的符号位00与y 尾数的符号位00同样参与到加法运算。

(步骤4)判断计算结果是否溢出:

当计算结果的尾数有两个符号位时,两个符号位相等,则没有溢出;如果两个符号位不等,则产生溢出。一旦发生溢出,计算结果的尾数右移一位,同时阶码加一。

本题中计算结果的尾数是00.11110000(000),其中一个符号位是0,另外一个符号位也是0,两个符号位相,不溢出。

(步骤5)判断计算结果是否满足规格化:

用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有两个符号位时:

规格化的浮点数的尾数是正数时应该是 00 . 1 X X X X X X X X X ……的形式 (00表示符号位,X 表示0或1中的任意一个数值)

规格化的浮点数的尾数是负数时应该是 11 . 0 X X X X X X X X X ……的形式 (11表示符号位,X 表示0或1中的任意一个数值)

本题中计算结果的尾数是00.11110000(000),满足规格化的浮点数的尾数是正数时应该是 00 . 1 X X X X X X X X X ……的形式。

(步骤6)计算结果舍入处理

因为舍弃的尾数是(000),所以无论哪种舍弃方法都会得到同样的结果。原因是舍弃0对结果本身无影响。因此(000)可以直接舍弃。

结果为[x+y] 浮=11110, 00.11110000;

(步骤7)验证结果正确性 x+y=1711415+=+== (15)10×2-6=(1111)2×2-6=(0.1111)2×2-2 6432646464

浮点数[x+y] =(0.1111)2×2-2的阶码是-2,尾数是+0.1111。变形补码要求本题中阶码采用补码形式并且两个符号位;尾数采用补码形式并且两个符号位。

[x+y]浮的阶码=11110(00是两个符号位;2对应二进制是010,010取反后是101,

101再加1变成110)

[x+y]浮的尾数=00.11110000(00是两个符号位;题目没写尾数几位,自己假定尾数10

位)

步骤7与步骤6结果一致,所以步骤1到步骤6都是正确的。


相关文章

  • 浮点数除法器的FPGA实现
  • 第39卷 专辑2008年5月 * 太原理工大学学报 JO U RN A L O F T A IYU A N U N IV ER SIT Y OF T ECH N OL O GY V ol. 39Spec. Issue M ay 2008 文 ...查看


  • 浮点数在计算机中的表示法
  • 浮点数 1. 什么是浮点数 在计算机系统的发展过程中,曾经提出过多种方法表达实数.典型的比如相对于浮点数的定点数(Fixed Point Number).在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置.货币的表达就可以使用这种 ...查看


  • 计算机组成与结构重点
  • 一.第一章 1.习题1.5如何划分计算机发展的五个阶段 根据电子计算机所采用的物理器件的发展,分为五代: 第一代:电子管计算机时代 第二代:晶体管计算机时代 第三代:集成电路计算机时代 第四代:大规模集成电路计算机时代 第五代:超大规模集成 ...查看


  • 广播电视大学[计算机组成形成性考核册]形考作业答案
  • 计算机组成原理A 形考作业一(参考答案) 一.选择题: 1.机器数_____中,零的表示形式是唯一的. A .原码 B .补码 C .移码 D .反码 答案:B ,C 2.某计算机字长16位,采用补码定点小数表示,符号位为1位,数值位为15 ...查看


  • 概率的基本性质教案
  • <概率的基本性质>教案 使用教材:人教版数学必修3 教学内容:1.事件间的关系及运算 2.概率的基本性质 教学目标:1.了解事件间各种关系的概念,会判断事件间的关系: 2.了解两个互斥事件的概率加法公式,知道对立事件的公式,会用 ...查看


  • 自考计算机组成原理课后习题答案
  • 习 题 2 参考答案(参见课本P.58) 1. 解释下列术语 解:可在课堂讲述的内容中寻找答案,也可参考课本下述段落的内容. 原码(P14.-7--5),补码(P15.-1-P16.1),反码(P17.17-18), 移码(P18.7-10 ...查看


  • 7研修日记
  • 技 师 研 修 阶 段 个 人 日 记 资 料 班级: 09电气技师1班 姓名: 陆佳卫 10月7日 星期一 雨 今天是技师阶段实习的第一天.对各电脑硬件进行熟悉,识别各硬件,知道这些 硬件所起的作用.并且了解各硬件如何组装.电脑的主机系统 ...查看


  • 微机原理课
  • 微机原理 课 1 讲 教 案 绪论 §1-1 计算机的发展概况及分类 §1-1-1 计算机的发展概况 1946年,第一台计算机在美国诞生,至今已有近60年的历史.60年来,计算机经历了 迅猛的发展,得到了广泛的普及,对整个社会的进步和科学的 ...查看


  • 机电系统创新综合设计说明书最终版
  • 目录 摘要 .................................................................................................................. ...查看


热门内容