C++ 中整数二进制位计数


给定一个整数,例如 num,任务是首先计算该数字的二进制数,然后计算该数字的总设置位数。

二进制数中的设置位由 1 表示。当我们计算整数的二进制数时,它由 0 和 1 的组合形成。因此,数字 1 在计算机术语中称为设置位。

输入 − int number = 50

输出 − 数字中设置位的总数为 - 3

解释 − 数字 50 的二进制表示形式为 110010,如果我们将其计算为 8 位数字,则会在开头追加两个 0。因此,数字中设置位的总数为 3。

输入 − int number = 10

输出 − 数字中设置位的总数为 - 2

解释 − 数字 10 的二进制表示形式为 00001010,如果我们将其计算为 8 位数字,则会在开头追加四个 0。因此,数字中设置位的总数为 2。

下面程序中使用的方法如下

  • 将数字输入到整数类型的变量中

  • 声明一个变量 count 用于存储设置位的总数,类型为无符号整数

  • 从 i 到 1<<7 和 i > 0 以及 i 到 i / 2 开始循环 FOR

  • 在循环内部,检查 num & 1 == TRUE 则打印 1,否则打印 0

  • 启动 while 循环以计算位的总数,直到数字不为 0

  • 在循环内部,设置 count = count + number & 1,并设置 number >>=1

  • 打印计数

示例

 在线演示

#include<iostream>
using namespace std;
//Count total set bits in a number
unsigned int bits(unsigned int number){
   unsigned int count = 0;
   unsigned i;
   //display the total 8-bit number
   cout<<"8-bit digits of "<<number<<" is: ";
   for (i = 1 << 7; i > 0; i = i / 2){
      (number & i)? cout<<"1": cout<<"0";
   }
   //calculate the total set bits in a number
   while (number){
      count += number & 1;
      number >>= 1;
   }
   cout<<"\nCount of total set bits in a number are: "<<count;
}
int main(){
   int number = 50;
   bits(number);
   return 0;
}

输出

如果我们运行以上代码,它将生成以下输出:

8-bit digits of 50 is: 00110010
Count of total set bits in a number are: 3

更新于:2020-08-31

4K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告