Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

整数のセットビットをカウントするC/C ++プログラム?


ここでは、整数のセットビット数を確認する方法を説明します。数値の2進表現では、設定されたビットは1です。たとえば、数値13には3つのセットビット1101があります。したがって、カウントは3になります。

この問題を解決するために、番号を右にシフトし、LSbが1の場合は、カウントを増やします。番号が0になるまで実行されます。

アルゴリズム

countSetBit()

begin
   count := 0
   while count is not 0, do
      if LSb of n is set, then
         count := count + 1
      end if
         n := n after shifting 1 bit to right
   done
   return count
end

#include<iostream>
using namespace std;
int count_set_bit(int n) {
   int count = 0;
   while(n != 0) {
      if(n & 1 == 1) {
         count++;
      }
      n = n >> 1; //right shift 1 bit
   }
   return count;
}
int main() {
   int n;
   cout << "Enter a number: ";
   cin >> n;
   cout << "Number of set bits: " << count_set_bit(n);
}

出力

Enter a number: 29
Number of set bits: 4

このプログラムはCで実行され、出力を生成しますが、C ++でコンパイルする場合、コンパイル時にエラーが返されます。渡される引数が多すぎると表示されます。


  1. n番目のカタラン数のC/C ++プログラム?

    カタラン数は一連の数です。カタラン数は、さまざまなカウントの問題で発生する一連の自然数を形成します。多くの場合、再帰的に定義されたオブジェクトが関係します。 C n 長さ2nのディック言語の数です。ディックワードは、n個のXとn個のYで構成される文字列であり、文字列の最初のセグメントにXより多くのYが含まれることはありません。たとえば、次は長さ6のディック言語です XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY. 記号Xを開き括弧として、Yを閉じ括弧として再解釈します。C n 正しく一致するn組の括弧を含む式の数をカウントします ((()

  2. Cの浮動小数点数のセットビットを数える方法は?

    この問題では、1つの浮動小数点値が与えられます。バイナリ表現で設定されたビット数を見つける必要があります。 たとえば、浮動小数点数が0.15625の場合、6つのセットビットがあります。典型的なCコンパイラは、単精度浮動小数点表現を使用していました。したがって、次のようになります。 ビット値に変換するには、数値を1つのポインター変数に取り込んでから、ポインターをchar*型データに型キャストする必要があります。次に、各バイトを1つずつ処理します。次に、各文字のセットビットをカウントできます。 例 #include <stdio.h> int char_set_bit_cou