2009 组成原理 cache概念 选择题
第 12 题

一个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

[tag_link]

正确答案:D

C 语言中的整型数据为 补码表示 ,int 为 32 位,short 为 16 位,故 x、y 转换成十六进制为 0000007FH、FFF7H。执行 z=x+y 时,由于 x 是 int 型,y 为 short 型,需将短字长数据转换成长字长数据,称之为“符号扩展”。由于 y 的符号位为 1,故在 y 的前面添加 16 个 1,即可将 y 上升为 it 型,其十六进制形式为 FFFFFFF7H。最后执行加法,即 O0OO007FH+FFFFFFF7H=00000076H,其中最高位的进位 1 自然丢弃。故选 D。【排除法】对于 x 的值,4 个选项都一样,无须计算;z=x+y=127-9=118>0,前 4 个字节必然全 0,排除 BC;只需算出 y=-9 的值即可,其十六进制形式为 FFF7H,排除 A。【提示】解题时,应先排除明显错误的选项,然后再推敲剩下的选项。