二進制中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<<i
            if mask & n!=0:
                count+=1
        return count

 方法3:  

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM