バイナリ中の1の個数(Python)
513 ワード
タイトルの説明
整数を入力し、その数のバイナリ表現の1つの数を出力します.ここで負数は補数で表される.
考え方:
ここでは巧みなアルゴリズムに関して、1つのバイナリ整数に対して、それを1つ減らしてそれ自体と相まって、この整数の最も右側の1をゼロに変えて、すべて0になるまで、どれだけ1が何回循環することができますか.負数については,最上位の符号ビットを反転させることで補符号を得ることができ,通常,0 x 7 FFFFFFFとの相乗を用いて得られる.
ps:初めてこの問題に触れると、自分から考えないで覚えておけばいいです.
コード:
整数を入力し、その数のバイナリ表現の1つの数を出力します.ここで負数は補数で表される.
考え方:
ここでは巧みなアルゴリズムに関して、1つのバイナリ整数に対して、それを1つ減らしてそれ自体と相まって、この整数の最も右側の1をゼロに変えて、すべて0になるまで、どれだけ1が何回循環することができますか.負数については,最上位の符号ビットを反転させることで補符号を得ることができ,通常,0 x 7 FFFFFFFとの相乗を用いて得られる.
ps:初めてこの問題に触れると、自分から考えないで覚えておけばいいです.
コード:
class Solution:
def NumberOf1(self, n):
if n<0:
n = n&0xffffffff
count = 0
while n:
count += 1
n = (n-1)&n
return count