二進位制中為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...