SHA256


私信TA

用户名:uq_41463493448

访问量:4894

签 名:

星光不问赶路人,岁月不负有心人

等  级
排  名 594
经  验 4235
参赛次数 1
文章发表 18
年  龄 22
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

解题思路:
合理使用位运算与‘&’可以用来求二进制数的1的个数

 num=num&(num-1);

定义一个循环,当num!=0就继续循环


例如:4&3   【位运算都是二进制补码参与运算】

(前面的0省略不写)0100     【8 4 2 1】      

(前面的0省略不写)0011     【8 4 2 1】
位运算的结果是:

(前面的0省略不写)0000    【8 4 2 1】

此时结果为0,计数器加1(即二进制表示的4中有一个‘1’)


参考代码:

#include <iostream>
using namespace std;
int main()
{
 int count=0,a,b,num;//定义一个计数器count用来存储二进制中1的个数
 cin>>a>>b;
 while(b>=a)//实现a~b的循环遍历
 {
  num=a;
  while(num!=0)
  {
   num=num&(num-1);//重点
   count++;
  }
  a++;
 }
 cout<<count<<endl;
 return 0;
}


 

0.0分

2 人评分

  评论区

  • «
  • »