Lowest Bit
Problem Description
Given an positive integer A (1 <= A <= 100), output the lowest bit of A.
For example, given A = 26, we can write A in binary form as 11010, so the lowest bit of A is 10, so the output should be 2.
Another example goes like this: given A = 88, we can write A in binary form as 1011000, so the lowest bit of A is 1000, so the output should be 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
题目大意:找到所给数字在二进制下从右向左起第一个1,并用十进制表示出来。
#include<stdio.h>
int ten_to_two(int n) /*将十进制转换为二进制*/
{
int a,i;
a=0;
i=1;
while(n>0){
if(n<2)a=a+i*n;
else a=a+n%2*i;
i=i*10;
n=n/2;
}
return a;
}
int two_to_ten(int n) /*将二进制转换为十进制*/
{
int a,i;
a=0;
i=1;
while(n>0){
if(n<10)a=a+i*n;
else a=a+n%10*i;
i=i*2;
n=n/10;
}
return a;
}
int main()
{
int n,i,a;
while(scanf("%d",&n)!=EOF){
if(n==0)break;
n=ten_to_two(n);
i=10;
while(n%i==0) /*找最小位*/
i=i*10;
n=two_to_ten(i/10);
printf("%d\n",n);
}
}