置位比特位置查找

来源:互联网 发布:红色警戒mac迅雷下载 编辑:程序博客网 时间:2024/06/11 18:29

描述:
输入一个十进制的正整数,从低位开始查找,找到第一个置位(1)比特的位置
按照如下规则对正整数进行置位比特的查找:
1. 当查找失败时,比如输入正整数0,返回-1
2. 当查找成功时,返回该比特的位置
例子:
比如 如入12,二进制表示是0000000000001100,则第一个置位比特为2
运行时间限制: 1 Sec
内存限制: 100 MByte
输入:
正整数
输出:
第一个置位比特的位置
样例输入:
12
样例输出:
2

#include <string>#include <vector>#include <cstdlib>#include <math.h>#include <algorithm>#include <iostream>using namespace std;void main(){    int loc,remainder,flag,cnt;    long long num;    flag = 0; cnt = 0;    cin >> num;    if (num == 0) cnt = -1;    else    {        while (flag == 0)        {            remainder = num % 2;            if (remainder) { flag = 1; break; }            cnt++;            num = num / 2;        }    }    loc = cnt;    cout<< loc<<endl;}
0 0