您的位置:首页 > 职场人生

面试训练二进制中1的个数

2012-09-07 22:46 162 查看
海涛的思路相当犀利

比如 1100 包含1的个数

先减-1 的1011 没改变高位的1 只改变地位 ,1100&1011 ---》1000刚好去除了最右边低位的1.

那么简单方面可以直接写出来

int data(int n)

{

int num=0;

while(n)

{

num++;

n = (n-1)&n;

}

return num;

}

这种题目的变种

两个整数m和n,求改变m二进制中多少位才能得到n

这种问题分两步走

1 两个求异或,目的就是求出m和n相比不同的1的个数

然后计算机异或后中含有的1的个数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: