python二進位制數加1 二進位制中為1的位數

2021-10-12 11:08:21 字數 1137 閱讀 6449

二進位制中為1的位數

題目要求

給定乙個整數,請計算二進位制中為1的位數

輸入: 13

輸出: 3

解釋: 13的二進位制表示是 1101,位為1的數量是3

思路分析

如果乙個數是奇數,那麼它的二進位制的最後一位一定是1,道理很簡單,其他的位都表示2n 只有最後一位表示20 。我們可以利用最後一位是否為1來統計為1的位數,這就需要最後一位是變化的,還好,我們可以用位運算子 >> (右移位運算子)

13 的 二進位制表示是 1101 ,13>>1 就表示二進位制的每一位都向右移動一位,移動後為 110,最右邊的1捨棄。如果二進位制最後一位是1,那麼一定是奇數。

示例**

# coding=utf-8

def count_one_bits(value):

count = 0

# 當value等於0時,二進位制的每一位都是0

while value:

if value % 2 == 1:

count += 1

value = value >> 1

return count

if __name__ == '__main__':

print(count_one_bits(6))

print(count_one_bits(13))

小小的公升級

上面的分析中,利用奇偶數來判斷最後一位是否為1,除此以外,還可以利用位運算子 &(按位與)來判斷最後一位是否為1。

13 的二進位制是 1101 ,1的二進位制是1,13&1 等價於1101 & 0001, 相同位進行與運算,得到結果為0001。

示例**

# coding=utf-8

def count_one_bits(value):

count = 0

# 當value等於0時,二進位制的每一位都是0

while value:

if value & 1 == 1:

count += 1

value = value >> 1

return count

if __name__ == '__main__':

print(count_one_bits(6))

print(count_one_bits(13))

操作二進位制寫入二進

操作二進位制 寫入二進位制 1 宣告變數 sqlite3 stmt stat 2 把sql語句解析到stat結構中去 sqlite3 prepare 3 繫結替換 sqlite3 bind blob 4 儲存到資料庫 int result sqlite3 step 5 釋放stat結構 sqlite...

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...

二進位制 二進位制中1的個數

題目 請實現乙個函式,輸入乙個整數,輸出該數二進位制表示中 1 的個數。例如,把 9 表示成二進位制是 1001,有 2 位是 1。因此,如果輸入 9,則該函式輸出 2。示例 1 輸入 00000000000000000000000000001011 輸出 3 解釋 輸入的二進位制串 0000000...