http://acm.hdu.edu.cn/showproblem.php?pid=1196
#include<iostream>
using namespace std;
int main()
{
int n,i,t,a[7]={1,2,4,8,16,32,64};
while(cin>>n,n)
{
for(i=0;i<7;i++)
if((n&a[i])!=0)
{
cout<<a[i]<<endl;
break;
}
}
return 0;
}
/*逻辑与:例如:
1010&1111=1010; 1100&1011=1000;
即:同时为1,则与的结果为1;
输入 n则n的二进制数最后一个1之后的数必为{1,2,4,8,16,32,64}二进制数中的一个;
比如 26的二进制的最后一个1之后的数为10,恰好为2的二进制数,其与2的与结果为2;
即11010&00010=10(二进制)=2(十进制)
*/