這個題有點不太適合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.