首页 > 编程知识 正文

Python给定一个正整数,请计算二进制中为1的位数

时间:2023-11-19 11:12:34 阅读:290873 作者:CKUP

本文介绍如何使用Python计算一个正整数在二进制下有多少个1。

一、初识二进制

计算一个正整数在二进制下有多少个1,必须先了解二进制的概念。二进制是计算机中数字的一种表示方式,只有0和1两个数码。二进制可以转换为十进制以及其他进制。

二进制的转换计算公式如下:

1  0  1  0
2^3 2^2 2^1 2^0
8 + 0 + 2 + 0 = 10

例如,二进制数1010,在十进制下的值为10。

二、计算二进制中为1的位数

计算一个正整数在二进制下有多少个1,可以通过以下代码实现:

def count_ones(n):
  count = 0
  while n:
    count += n & 1
    n = n >> 1
  return count

print(count_ones(10)) # 输出2

这个函数的实现原理是,将二进制数与1做位与运算,若结果为1,则说明该位是1,计数器+1;然后将二进制数右移一位,重复这个过程直到n为0。

三、进一步优化

以上代码虽然实现了计算二进制中为1的位数,但是还存在优化空间。可以使用Python中的bin()函数将十进制数转换为二进制字符串,然后计算该字符串中有多少个1。

def count_ones(n):
  binary_str = bin(n)[2:]
  count = binary_str.count('1')
  return count

print(count_ones(10)) # 输出2

这个函数的实现原理是,将十进制数转换为二进制字符串,并用字符串的count()方法计算该字符串中有多少个1。

四、总结

本文介绍了Python计算一个正整数在二进制下有多少个1的两种方法,第一种方法是使用位运算实现,第二种方法是将十进制数转换为二进制字符串,然后计算该字符串中有多少个1。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。