本文介紹如何使用Python計算一個正整數在二進制下有多少個1。
一、初識二進制
計算一個正整數在二進制下有多少個1,必須先了解二進制的概念。二進制是計算機中數字的一種表示方式,只有0和1兩個數碼。二進制可以轉換為十進制以及其他進制。
二進制的轉換計算公式如下:
1 0 1 0 2^3 2^2 2^1 2^0 8 + 0 + 2 + 0 = 10
例如,二進制數1010,在十進制下的值為10。
二、計算二進制中為1的位數
計算一個正整數在二進制下有多少個1,可以通過以下代碼實現:
def count_ones(n): count = 0 while n: count += n & 1 n = n >> 1 return count print(count_ones(10)) # 輸出2
這個函數的實現原理是,將二進制數與1做位與運算,若結果為1,則說明該位是1,計數器+1;然後將二進制數右移一位,重複這個過程直到n為0。
三、進一步優化
以上代碼雖然實現了計算二進制中為1的位數,但是還存在優化空間。可以使用Python中的bin()函數將十進制數轉換為二進制字符串,然後計算該字符串中有多少個1。
def count_ones(n): binary_str = bin(n)[2:] count = binary_str.count('1') return count print(count_ones(10)) # 輸出2
這個函數的實現原理是,將十進制數轉換為二進制字符串,並用字符串的count()方法計算該字符串中有多少個1。
四、總結
本文介紹了Python計算一個正整數在二進制下有多少個1的兩種方法,第一種方法是使用位運算實現,第二種方法是將十進制數轉換為二進制字符串,然後計算該字符串中有多少個1。
原創文章,作者:FWWJR,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/373884.html