如何将移位后的位存储在 C 中的按位运算中?
How do I store the shifted bit in a bitwise operation in C?
我试图创建一个简单的函数来检查一个 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;
}
在使用掩码进行移位之前获取最后一个槽中的位:
int bit = (x & 1);
然后在 x 上进行移位。
>>
和其他运算符一样。 x = x>>1;
会做到,这当然意味着 x>>=1
会做到。
更新
如果你想除以 2,你确实应该移动 1。
别笑话我,我老了
我试图创建一个简单的函数来检查一个 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;
}
在使用掩码进行移位之前获取最后一个槽中的位:
int bit = (x & 1);
然后在 x 上进行移位。
>>
和其他运算符一样。 x = x>>1;
会做到,这当然意味着 x>>=1
会做到。
更新
如果你想除以 2,你确实应该移动 1。
别笑话我,我老了