旧魏は学ぶためにあなたを取るの申し出を受賞---ブラシタイトルシリーズ(2進数の1の数値11)

11バイナリ数1

問題:

進数1での出力の数を示す整数。ここで、負の数は補数を示します。

ソリューション:

思想:

ゼロ以外の整数ならば、これは少なくとも1の整数です。一番右の1を0に変更されるで我々は整数1、元の整数を引く場合、元となる(0、次に右端の場合、続いて1があります)、すべての01 1は戻ってきます。すべての残りのビットは影響を受けません。
例えば:第三の数の右に進数1100は、右端の1です。結果は、我々はマイナス1の結果は右端にあることがわかっ1011であるので、フロントは、不変のままで1減算した後、第三は0になり、それが後0 1 1の2つになりました1つのビットは全て後方取り始めています。オリジナルの整数後の結果は、我々は、その後の操作で行うと、元の整数から1を引いた場合、この時間は1すべてのビットが0になり始めたものを一番右。そのような元の整数演算を行うには、次いで1100&1011 = 1000の整数マイナス1を入れ、そしてように、整数1が1のバイナリ整数の数、どのくらいすることができる0となる右端う回このような操作。

Pythonコード:

# -*- coding:utf-8 -*-
class Solution:
    def NumberOf1(self, n):
        # write code here
        count=0
        if(n<0):
            n=n&0xffffffff
        while(n):
            count+=1
            n=(n-1)&n
        return count
公開された160元の記事 ウォン称賛30 ビュー70000 +

おすすめ

転載: blog.csdn.net/yixieling4397/article/details/104886985