python二进制数某一位置1,二进制中1的个数(python)

题目描述

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(这里只取前32位)

-2的补码为:先求-2的反码 10000.。。10  -》 11111.。。01

再求补码,即反码末尾加1:111.。。10

方法1:

1 # -*- coding:utf-8 -*-

2 class Solution:

3 def NumberOf1(self, n):

4 count=0

5 n = n&0xFFFFFFFF #python 该数前面有多少位咱也不了解,截取32位就可以了

6 for i in str(bin(n)):

7 if i == '1':

8 count+=1

9 return count

方法2:

# -*- coding:utf-8 -*-

class Solution:

def NumberOf1(self, n):

count = 0

for i in range(32):

mask = 1<

if mask & n!=0:

count+=1

return count

方法3:

7ca0e93ab6d04c685fc5d30dbf4c01dc.png

1 class Solution:

2 def NumberOf1(self, n):

3 count=0

4 n = n&0xFFFFFFFF

5 while n>0:

6 n = n&(n-1)

7 count+=1

8 return count

2019-12-02 09:51:36

标签:count,python,32,self,个数,Solution,二进制,NumberOf1,class

来源: https://www.cnblogs.com/NPC-assange/p/11968988.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值