(2分)
写出下面程序的输出结果:
unsigned int x = 0xffffffff;
unsigned int b = x + 2;
int y = x;
printf("%x,%d,%x,%d",y,y,b,b);
关于第二个y的%d输出:
y的最高位为1,所以肯定是负数。则问题就是,已知一个负数的二进制数,如何转化为十进制数。这和第一周刚好相反。
步骤:
1.减一: f f f f f f f 1110
2.每位取反:0 0 0 0 0 0 0 0001
所以y为-1