如何在C中按位操作存储移位的位?

时间:2016-10-14 18:57:03

标签: c bit-manipulation bitwise-operators bit-shift

我试图创建一个简单的函数来检查在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;
}

2 个答案:

答案 0 :(得分:1)

在使用面具进行轮班之前,在最后一个位置获取位:

int bit = (x & 1);

然后在x上进行转换。

答案 1 :(得分:0)

>>与其他任何运营商一样。 x = x>>1;会做到这一点,当然这意味着x>>=1会这样做。

<强>更新

如果你想除以2,你的确应该换1。

不要取笑我,我已经老了。