Pythonで整数のセットビットを計算する

スポンサーリンク

おいおい学習者 この記事では、プログラミング言語 Python を使って、整数に設定されているビットの総数を計算します。

この問題では、Bit Manipulationの概念の意義と威力を示すことになるでしょう。


スポンサーリンク

セットビットとは – はじめに

2進数の世界では、セットビットは1によって表されます。

つまり、基本的には、ある数の2進数に含まれる1の総量を求めればよいのです。

1
2
3
4
5
6
7
8
9
def countsetbits(A):
    count = 0       
    while(A!=0):
        A = A & (A-1)   
        count = count+1  
    return(count)      
 
n = int(input("Enter the Number: "))
print(countsetbits(n))

問題を理解する

N が与えられた。


数Nの2進数版に存在するセットビットの総数を返せ。

例えば
与えられた数 (N) = 5 の場合。

5の2進数は101なので、結果は2です。

101の中に存在する1の総数は2であり、したがって、セットビットの数は2です。


アプローチ1:手動変換

与えられた10進数を2進数に変換し、変換後の2進数における1の総数を数えます。

しかし、これは問題の効率的な解決策とは言えない。

この例では、時間の複雑さは線形になるが、この作戦をより効率的にすることができる。


アプローチ2:ビット操作

このアプローチでは、Bit Manipulationのメソッドの1つを見ていきます。

この方法を採用することで、コードとアプローチの効率を向上させることができます。

以下にその手順を説明します。

  1. N>0かどうかをチェックする
  2. AとA-1のANDを計算する
    1. A != 0 になるまで手順 2 を繰り返す。
  3. 反復回数のカウントを保持する
  4. このカウントは、数Nのセットされたビットの数に等しい

Pythonを使ったセットビットの計算

Enter the Number: 5
2

サンプル出力

Enter the Number: 100
3
No Set Bits Demonstration

問題の背景となる概念、そして問題の解決策を理解していただけたでしょうか?

チュートリアルを読んでいただき、ありがとうございました。


タイトルとURLをコピーしました