ProDeveloperTutorial.com

教程和编程解决方案
菜单
  • Shell脚本
  • 系统设计
  • Linux系统编程
  • 4g LTE
  • 编码问题
  • C
  • C ++
  • DSA
  • GIT

计算置位位数

前开发者教程 2020年3月30日

问题陈述:

给您一个数字,如果以二进制格式表示该数字,则返回该数字的设置位数。

 

例:

如果输入数字为10,则二进制表示形式为1010。设置的位数为2。

 

这个问题可以通过两种方式解决。

  1. 通过在构建库中使用
  2. 通过一点操作

我们将看到两种方法。

 

通过使用内置库函数:

 

C ++提供了内置函数位集<32>()

它将int值转换为二进制,并使用“ count()”方法获取设置的位数。

 

例如:位集<32>(n).count()

 

通过使用位操作:

 

在位操作中,我们将使用按位和(&)和右移操作。

 

按位和(&):

 

要知道当前位的值是set还是unset bit,您需要按位进行(&)与当前位。

 

即

 

1

&1

——-

1

 

1

&0

——-

0

 

要移至下一位,请使用右移运算符(>>).

 

下面是如何计算设置的位数:

 

 

1010

&1

———

0

 

>>1

 

101

&1

———

1

 

>>1

 

10

&1

———

0

 

>>1

 

1

&1

———

1

 

因此,设置的总位数为2。

 

C ++解决方案

#include<iostream>

using namespace std;
 

void count_set_bits_by_bit_wise(uint32_t n) 
{
    int res=0;
    while (n!=0) 
    {
        res +=  n&1;
        n = n >> 1;
    }
    cout<<"The number of set bits by using library function is = "<< res<<endl;
}

void count_set_bits_by_lib_function(uint32_t n) 
{
    cout<<"The number of set bits by using library function is = "<< bitset<32>(n).count()<<endl;
}

int main()
{
	uint32_t num = 20;
	cout<< "The num in int value is = " <<num<<endl;
	cout<< "The num in binary format is = " << bitset<32>(num)<<endl;

	count_set_bits_by_bit_wise(num);
	count_set_bits_by_lib_function(num);

	return 0;
}

 

 

该网站上可用的教程列表:

C编程20+章C ++编程80+章
100多个编码问题数据结构和算法85+章
系统设计20+章Shell脚本编写12章
4g LTE 60+章节最常见的编码问题
5G NR 50+章Linux系统编程20+章
分享
电子邮件
鸣叫
领英
Reddit
绊倒
Pinterest的
上一篇文章
下一篇

关于作者

前开发者教程

每天我们都会讨论竞争性编程问题,请加入我们的网站:   电报频道

ProDeveloperTutorial.com

教程和编程解决方案
版权© 2020 ProDeveloperTutorial.com
从以下课程获得热门课程: 教育性的



    <base id="kQ732vQ" class="ktn9J9m"><ul id="atZeFEN" class="aFqxPrc"></ul></base>