问题
问答题
一个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
答案
参考答案:符号数在计算机中通常是用补码表示的,所以,x为正数,表示为0000007FH,y为负数,表示为FFF7H。求和时,由于位数不一致,所以y需要进行扩展,对于补码而言,新增加位的值与符号位相同,所以扩展后为FFFF FFF7H,x、y两者相加,所以得到00000076H。