怎样判断二进制中1的个数

怎样判断一个数用二进制表示中1的个数

解法?

思路:先将一个数化成二进制表示,在用不同的方法来计算1的个数。

方法1:(简单除暴法)

a=[]
count=0
b=int(input())
while b>=0:
        k=b%2
        b=b//2
        a.append(k)//将数字转换成二进制,再将转换而成的二进制存入a列表中
for i in a:
     if i==1:
        count+=1
print(count)
     

方法2:(使用与运算的计算规律)

a=[]
count=0
n=0 b
=int(input()) while b>=0: k=b%2 b=b//2 a.append(k)将数字转换成二进制,再将转换而成的二进制数存入a列表中(逆序存入的)
c=len(a)
m=c-1
while n<=m:
a[n],a[m]=a[m],a[n]
n+=1
m-=1//将二进制的数按顺序排好
for i in a:
if i&1==1:
count+=1
print(count)

方法3:(若题目给的是二进制数是x,则可以直接用x*(x-1)!=0的次数来表示二进制数中1的个数。x*(x-1)的作用是将二进制的最低位1消除

count=1
while x&(x-1)!=0:
        count+=1
        x-=1

 

posted @ 2022-02-21 20:43  天空之城—我的理想国  阅读(182)  评论(0)    收藏  举报