其他分享
首页 > 其他分享> > 得出一个int类型的数中打开位的数量的函数

得出一个int类型的数中打开位的数量的函数

作者:互联网

两种方式。

利用count计数,count = 0;

1.通过求模。

假设整数为n, n%2 !=0,则count++;否则n = n/2。 因为n为int,所以n/2的结果会被强制截断。当结果小于1时,会截断为0,退出循环。

int open_bit_qty(int n)
{
    int count = 0;
    while (n)
    {
        if (n % 2 )  
            count++;
        n =     n / 2;
    }

    return count;
}

2.通过位运算。

将n与1进行&运算,判断最后一位(或者说第0位是否为打开状态)。通过将n不断右移,来循环判断。

循环条件为:CHAR_BIT*sizeof(int),得出当前系统下的int二进制的位数。这样写的好处应当是可移植性。

int open_bit_qty(int n)
{
    int count = 0;
    int size = CHAR_BIT * sizeof(int);
    for (int i = 0; i <= size; i++, n >>= 1)
    {
        if (1 & n)
            count++;
        i++;
    }
    return count;
}

标签:count,函数,int,qty,CHAR,++,open,数中
来源: https://www.cnblogs.com/muyangbeihai/p/15993277.html