您的位置:首页 > 理论基础

深入了解计算机系统 家庭作业 2.66

2012-12-01 13:40 288 查看
int leftmost_one(unsigned x){
x|=x>>1;
x|=x>>2;
x|=x>>4;
x|=x>>8;
x|=x>>16;

return (x&((~x)>>1)|0x80000000));
}


原理是:先把最高位1右边的全部变为1;对x取反,然后向右移1,这样以后转换后的数的最低位1与装换前最高位1在统一位;之后最高位赋为1,然后与x进行“与”运算。。。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: