经典指数          
原因
11243
浏览数
0
收藏数
 

一个C语言程序在一台32位机器上运行。程序中定义了三个变量xyz,其中x和z是int型,y为short型。当x=127,y=-9时,执行赋值语句z=x+y后,xyz的值分别是_________。
  • x=0000007FH,y=FFF9H,z=00000076H
  • x=0000007FH,y=FFF9H,z=FFFF0076H
  • x=0000007FH,y=FFF7H,z=FFFF0076H
  • x=0000007FH,y=FFF7H,z=00000076H

     举报   纠错  
 
切换
1 个答案

D

解析:

     C语言中变量以补码形式存放在内存中,正数的补码与原码相同,负数求补码方式为(符号位不变,其余各位取反,最后末尾加1);

      32位机器:int 32位,short 16位。

      x = 127,正数,原码:0111 1111,补码:0111

1111,扩展到32位高位补0,结果为0000007FH;

      Y = -9,负数,原码:1000 1001,补码:1111 0111,扩展到16位高位补1,结果为FFF7H;

      z = x + y = 118,原码:0111 0110,补码:0111 0110,扩展到32位高位补0,结果为00000076H。

      注意:扩展时,符号位不变。

 

 
切换
撰写答案