編程練習:輸入一個整除,輸出該二進制表示中1的個數。負數用補碼表示。


這個題有點不太適合Python,因為python的變量是沒有類型聲明的。

 

下面的代碼值考慮正數情況:

 1 #!/usr/bin/env python3
 2 
 3 def count_1(num):
 4         count = 0
 5         while num != 0:
 6                 count += 1
 7                 print(count)
 8                 num = num & (num-1)
 9         return count
10 
11 if __name__ == "__main__":
12         print(count_1(15))

這里主要的代碼就是  num = num & (num-1)

例如: 12二進制表示為 1100,前面很多個0就省略了。

    12-1的二進制位 1011,12最右邊的1開始的位和11對應的為是相反的。

    所以這樣一與可以減去一個1.

    得到的結果為 1000,減一得到 0111. 兩者相與后得到 0000.結束。

    得知該數字有兩個1.


免責聲明!

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



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