C++--ACM之杭电OJ--1196 二进制问题

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int n;
    int a;
    while(cin>>n&&n)
    {
        int t=0;
        int m;
        a=n;
        while(n%2==0)       //当n为偶数时   ,直到二进制倒序第一个为1的位置
        {
            t++;                  //有多少0 t的值就为几  
            n=n/2;  
        }
        if(a%2==0)
        {
            m=pow(2,t);               //计算  Lowest Bit;
        }
        else m=1;               //当n为奇数时,二进制末位即为1,所以Lowest Bit=1;
        cout<<m<<endl;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/William_Sunrise/article/details/81635277