给你一个正整数A(1<A<100),输出它的最低位。
例如,给你一个A=26,我们可以把A写成二进制形式11010,因此,最低位是10,所以输出的应该是2;又如A=88,写成二进制为1011000,
最低位为1000,所以输出8
Input
Each line of input contains only an integer A (1 <= A <= 100). A line containing "0" indicates the end of input, and this line is not a part of the input data.
Output
For each A in the input, output a line containing only its lowest bit.
Sample Input
26 88 0
Sample Output
2 8
#include<stdio.h>
int main()
{
int n,s,t;
while(scanf("%d",&n)&&(n!=0))
{
s=1;
while(n>0)
{
t=n%2;
if(t==1) break;
s=s*2;
n/=2;
}
printf("%d\n",s);
}
return 0;
}
最简代码
# include <stdio.h>
int main()
{
int n;
while(scanf("%d",&n)!=EOF&&n)
printf("%d\n",n&(-n));
return 0;
}