在Python中计算整数中的设定位总数

118 阅读2分钟

嗨,学习者!在本教程中,我们将使用Python编程语言来计算一个整数中的设定位总数。这个问题将展示比特操纵概念的意义和力量。


什么是设定位--简介

在二进制数的世界里,集合位是由1来代表的。所以,基本上,我们需要找到一个数字的二进制形式中的1的总量。

No Set Bits Demonstration

无集比特演示


理解问题

给定一个数字 N.
返回数字N的二进制版本中存在的集合位的总数。

例如,
如果给定的数字(N)=5。那么结果是2,因为5的二进制版本是101。101中存在的1的总数是2,因此,设置位的数量是2。


方法1:手动转换

将给定的十进制数转换成二进制数,然后计算转换后的二进制数中的1的总数。然而,这并不是解决问题的有效办法。

在这种情况下,时间复杂度将是线性的,但我们可以使这种策略更有效率。


方法2:位操作

因此,在这个方法中,我们将看到位操纵的方法之一。我们可以通过采用这种方法来提高我们代码和方法的效率。

所以我们将按照下面提到的步骤进行。

  1. 检查N是否>0
  2. 计算A和A-1的和
  3. 继续重复第2步,直到A !=0
  4. 我们将保持迭代次数的计数。
  5. 该计数等于数字N中的设定位数。

使用Python计算集合位

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))

输出示例

Enter the Number: 5
2
Enter the Number: 100
3

我希望你能理解问题背后的概念以及问题的解决方案。

谢谢你阅读本教程!😇