思路一:最简单的做法,先将A转换为二进制保存在char数组,然后从最后开始迭代直到第一个1,再计算其值。
思路二: 一个十进制的数A,转换为二进制的运算可以通过不停地令A/2,每次除以2会二进制数多一位,因此可以判断第一次A%2为1时,这个1就是最后的1。代码如下
#include<stdio.h>
int main() {
int A;
//A为0退出循环
while (scanf("%d", &A) && A) {
int result = 1;
while (A) {
//判断这一位二进制数是否为1
if (A%2 == 1) break;
//进行求下一位二进制数的操作
A /= 2;
//每多求一位二进制数,t累乘2
result *= 2;
}
printf("%d\n", result);
}
return 0;
}