2.浮点数的加/减运算
1.在 C 语言中,short 型的长度为 16 位,若编译器将一个 short 型变量 X 分配到一个 32 位
寄存器 R 中,且 X=0x8FA0,则 R 的内容为( )
A.0x00008FA0 B.0xFFFF8FA0 C. 0xFFFFFFA0 D. 0x80008FA0
分析:选 B
2.下列关于浮点数的说法中,正确的是( )
I.最简单的浮点数舍入处理方法是恒置“1”法
II. IEEE 754 标准的浮点数进行乘法运算的结果肯定不需要做“左规”处理
III.浮点数加减运算的步骤中,对阶的处理原则是小阶向大阶对齐
IV.当补码表示的尾数的最高位与尾数的符号位(数符)相同时表示规格化
V.在浮点运算过程中如果尾数发生溢出,则应进入相应的中断处理
A II、III 和 V B II 和Ⅲ
C I、II 和 III D II、III、IV 和 V
分析:本题考查浮点数的运算。最简单的舍入处理方法是直接截断,不进行任何其他处理(截
断法),Ⅰ错误。IEEE 754 标准的浮点数的尾数都是大于等于 1 的,所以乘法运算的结果也
是大于等于 1,故不需要“左规”(注意:有可能需要右规),II 正确;对阶的原则是小阶向大阶
看齐,Ⅲ正确。当补码表示的尾数的最高位与尾数的符号位(数符)相异时表示规格化,Ⅳ
错误。浮点运算过程中,尾数出现溢出并不表示真正的溢出,只有将此数右规后,再根据阶
码判断是否溢出,V 错误。故选 B
注意:浮点数运算的过程分为对阶、尾数求和、规格化、舍入和溢出判断,每个过程的细节
均需掌握,本题的 5 个选项涉及这 5 个过程。
3.【2009 统考真题】一个 C 语言程序在一台 32 位机器上运行。程序中定义了三个变量 x、
y、z,其中 x 和 z 为 int 型,y 为 short 型。当 x=127、y=-9 时,执行赋值语句 z=x+y 后,
x、y、z 的值分别是( )
A.x=0000007FH,y=FFF9H,z=00000076H
B.x=0000007FH,y=FFF9H,z=FFFF0076H
C.x=0000007FH,y=FFF7H,z=FFFF0076H
D.x=0000007FH,y=FFF7H,z=00000076H
分析:结合题干及选项可知,int 为 32 位,short 为 16 位;又因 C 语言的数据在内存中为补
码形式,因此 x、y 的机器数写为 0000007F、FFF7H。执行 z=x+y 时,由于 x 为 int 型,y 为
short 型,因此需将 y 的类型强制转换为 int 型,在机器中通过符号位扩展实现,由于 y 的符
号位为 1,因此在 y 的前面添加 16 个 1,即可将 y 强制转换为 int 型,其十六进制形式为