我试图创建一个简单的函数来检查在int中设置为1的位数。
我最初取得的成就是
#include <stdio.h>
int bitsOne (int x){
int r=0;
while (x > 0){
if (x % 2 == 1) r++;
x = x/2;
}
return r;
}
我试图使用>>
运算符代替,但我不知道如何存储转移的数字。
更新
使用Brick的建议我实现了我想要的目标,
#include <stdio.h>
int bitsOne (int x){
int r=0;
int bit;
while (x > 0){
bit = (x & 1);
if (bit == 1) r++;
x>>=1;
}
return r;
}
答案 0 :(得分:1)
在使用面具进行轮班之前,在最后一个位置获取位:
int bit = (x & 1);
然后在x上进行转换。
答案 1 :(得分:0)
>>
与其他任何运营商一样。 x = x>>1;
会做到这一点,当然这意味着x>>=1
会这样做。
<强>更新强>
如果你想除以2,你的确应该换1。
不要取笑我,我已经老了。