#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; }