读书人

深入理解计算机系统的家庭作业解决思路

发布时间: 2012-05-12 15:39:31 作者: rapoo

深入理解计算机系统的家庭作业
下面两题是深入理解计算机系统的家庭作业,由于没有答案,所以上CSDN上找各位大神求助,两题都有限制的,限值如下:1、禁止使用:条件语句、分支,循环、函数调用、宏调用2、除法、模运算、乘法3、比较运算符,题目如下
1、

C/C++ code
不用sizeof运算符,编写一个函数,当在32位机上运行时返回1,否则返回0

2、
C/C++ code
保留最高二进制位,其他位置为0,如传入1010,则返回1000,请写一个函数,函数原型是int leftmost_one(unsigned);

求各位大神帮忙一下,谢谢

[解决办法]
第二题,网上的答案:

C/C++ code
int leftmost_one(unsigned x)  {      x |= (x >> 1);      x |= (x >> 2);      x |= (x >> 4);      x |= (x >> 8);      x |= (x >> 16);      //上面的过程,使得x的最后几位全是1。比如x是0...00001010,经过上面的过程后,x就是0...00001111    return (x & ((~x >> 1) | 0x80000000));  } 

读书人网 >C语言

热点推荐