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

2022/3/11 23:20:42

本文主要是介绍得出一个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;
}


这篇关于得出一个int类型的数中打开位的数量的函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程