二進位制1的個數 python

2021-10-03 04:33:03 字數 911 閱讀 9763

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。

題解1:

從n的2進製形式的最右邊開始判斷是不是1:n&1 == 1,count+=1,n>>1

該解法如果輸入是負數會陷入死迴圈,

因為負數右移時,在最高位補得是1,移到最後會全變成1

本題最終目的是求1的個數,那麼會有無數個

題解2:

正整數的補碼不變,負整數的補碼為取反加一。

**

# -*- coding:utf-8 -*-

class

solution

:# 從n的2進製形式的最右邊開始判斷是不是1:n&1 == 1

# 該解法如果輸入是負數會陷入死迴圈,

# 因為負數右移時,在最高位補得是1,移到最後會全變成1

# 本題最終目的是求1的個數,那麼會有無數個

defnumberof1

(self, n)

:# write code here

count =

0if n <0:

n = n &

0xffffffff

#計算n的補碼

while n !=0:

n = n&

(n-1

) count +=

1return count

if __name__ ==

'__main__'

: s = solution(

)print

(s.numberof1(-8

))

總結

把乙個整數減去1之後再和原來的整數做位與運算,得到的結果相當於是把整數的二進位制表示中的最右邊乙個1變成0,很多二進位制的問題可以用這個思路解決。

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

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

二進位制1的個數

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。可能引起死迴圈的解法 class solution return cnt 由於數字在計算機中的二進位制儲存事實上並不包含符號 也就是 都是統一用補碼表示的。移位操作會保證數的正負不變,當遇到乙個負數,右移到最前面的符號位1時,再往右移...

二進位制中1的個數(python)

原始碼 輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。coding utf 8 如果乙個整數不為0,那麼這個整數至少有一位是1。如果我們把這個整數減1,那麼原來處在整數最右邊的1就會變為0,原來在1 後面的所有的0都會變成1 如果最右邊的1後面還有0的話 其餘所有位將不會受到影響...