输入一个十进制的正整数,从低位开始查找,找到第一个置位(1)比特的位置

来源:互联网 发布:手机淘宝修改评价 编辑:程序博客网 时间:2024/06/06 12:51

今天在网上看到一个题目,输入一个十进制的正整数,从低位开始查找,找到第一个置位(1)比特的位置 按照如下规则对正整数进行置位比特的查找: 1. 当查找失败时,比如输入正整数0,返回-1 2. 当查找成功时,返回该比特的位置 例子: 比如 如入12,二进制表示是0000000000001100,则第一个置位比特为2
那我的思路是先使二进制1左移i位与原数的二进制相与,第一个为真的时候返回i值即可,代码如下:

#include <iostream>using namespace std;int decToBin(int val){    if ( 0 == val)    {        return -1;    }    for (int i = 0; i < 16; ++i)    {        if(val & (1 << i))        {            return i;        }    }    return 0;}int main(){    int val;    cin>>val;    cout<<decToBin(val)<<endl;    return 0;}
阅读全文
0 0