Lowest Bit
思路一:最简单的做法,先将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;
}

相关文章: