首页 > 试题广场 >

我们在一个int类型值为32位的机器上运行程序。这些值以补码

[问答题]

我们在一个int类型值为32位的机器上运行程序。这些值以补码形式表示,而且它们都是算术右移的。unsigned类型的值也是32位的。

我们产生随机数x和y,并且把它们转换成无符号数,显示如下:

/* Create some arbitrary values*/
int x = random(); 
int y=  random();
/* Convert to unsigned*/
unsigned ux =(unsigned) x;
unsigned uy = (unsigned.) y;

对于下列每个C表达式,你要指出表达式是否总是为1。如果它总是为1,那么请描述其中的 数学原理。否则,列举出一个使它为0的参数示例。

A. (x<y)= =(-x>-y)

B. ((x+y)<<4) +y-x==17*y+15*x

C. ~x+~y+l==~(x+y)

D. (ux-uy) = = - (unsigned) (y-x)

E. ((x>>2)<<2)<=x

这道题你会答吗?花几分钟告诉大家答案吧!