#include<iostream>
#include<bitset>
#include<cmath>
using namespace std;
int main(int argc, char* argv[])
{
int get, count;
while(cin >> get)
{
if(get == 0)
return 1;
bitset<8> bs(get);
count = 0;
int len = bs.size();
int i = 0;
for(;i < len-1 && !bs[i]; i++);
cout << pow((double)2,i) << endl;
}
return 0;
}
bitset的顺序居然是LSB在前,MSB在后,方便了,但是,不习惯。。。
下面是网上的,哎-->
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
for(int n;cin >> n && n!=0;)
cout << int(n&-n) << endl;
return 0;
}
本文通过两个示例展示了如何使用 C++ 的 bitset 和位操作来高效地计算一个整数中最低有效位到最高有效位间首个为1的位所对应的最小幂。第一个示例使用 bitset 的特性来遍历二进制位,第二个示例则直接通过按位与运算快速找到结果。
5139

被折叠的 条评论
为什么被折叠?



