How to get position of right most set bit in C

前端 未结 15 1903
你的背包
你的背包 2020-12-09 04:48
int a = 12;

for eg: binary of 12 is 1100 so answer should be 3 as 3rd bit from right is set.

I want the position of the last most set bit o

15条回答
  •  囚心锁ツ
    2020-12-09 05:26

    int main(int argc, char **argv)
    {
        int setbit;
        unsigned long d;
        unsigned long n1;
        unsigned long n = 0xFFF7;
        double nlog2 = log(2);
    
        while(n)
        {
            n1 = (unsigned long)n & (unsigned long)(n -1);
            d = n - n1;
            n = n1;
    
            setbit = log(d) / nlog2;
            printf("Set bit: %d\n", setbit);
        }
    
        return 0;
    }
    

    And the result is as below.

    Set bit: 0
    Set bit: 1
    Set bit: 2
    Set bit: 4
    Set bit: 5
    Set bit: 6
    Set bit: 7
    Set bit: 8
    Set bit: 9
    Set bit: 10
    Set bit: 11
    Set bit: 12
    Set bit: 13
    Set bit: 14
    Set bit: 15
    

提交回复
热议问题