1. 程式人生 > >牛客網《劍指offer》之Python2.7實現:二進位制中1的個數

牛客網《劍指offer》之Python2.7實現:二進位制中1的個數

題目描述

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

思路

來源牛客網高玩: 如果一個整數不為0,那麼這個整數至少有一位是1。如果我們把這個整數減1,那麼原來處在整數最右邊的1就會變為0,原來在1後面的所有的0都會變成1(如果最右邊的1後面還有0的話)。其餘所有位將不會受到影響。

程式碼

# -*- coding:utf-8 -*-
class Solution:
    def NumberOf1(self, n):
        # write code here
        count = 0
        if n < 0:
            n &= 0xffffffff
        while n:
            n &= (n-1)
            count += 1
        return count