在C ++中使用Bitset对数字的二进制表示形式中的尾随零进行计数

给定整数num作为输入。目的是使用位集查找num的二进制表示形式中的尾随零数。

一个位集在其中存储位0和1。它是一个位数组。

例如

输入值

num = 10
输出结果
Count of number of trailing zeros in Binary representation of a number using
Bitset are: 1

说明

The number 10 in binary is represented as 1010 so trailing zeroes in it is
1.

输入值

num = 64
输出结果
使用位集的数字二进制表示形式中的尾随零数计数是: 6

说明

The number 64 in binary is represented as 10000000 so trailing zeroes in it is 6.

以下程序中使用的方法如下-

在这种方法中,我们使用位集。我们将使用|将数字设置为num。现在,使用for循环遍历位集,一旦遇到第一个1,然后中断循环,否则增加计数以尾随零。

  • 以整数num作为输入。

  • 功能 trailing_zeroes(int num) 取num并使用Bitset返回数字的二进制表示形式中尾随零的数量计数。

  • 将初始计数设为0。

  • 采取位set arr。

  • 将num设置为arr | = num。

  • 使用for循环从i = 0到i <64遍历arr。如果arr [i]为0,则递增计数,否则将中断循环。

  • 返回计数作为循环结束时的结果。

示例

#include <bits/stdc++.h>
using namespace std;
int trailing_zeroes(int num){
   int count = 0;
   bitset<64> arr;
   arr |= num;
   for (int i = 0; i < 64; i++){
      if (arr[i] == 0){
         count++;
      } else {
         break;
      }
   }
   return count;
}
int main(){
   int num = 6;
   cout<<"使用位集的数字二进制表示形式中的尾随零数计数是: "<<trailing_zeroes(num);
   return 0;
}
输出结果

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

使用位集的数字二进制表示形式中的尾随零数计数是: 1

猜你喜欢