LeetCode_191。1ビット数

 

1ビットの191番号

イージー

符号なし整数をとる関数を記述し、それは(としても知られている「1」のビットの数を返す  ハミング重みが)。

 

例1:

入力:00000000000000000000000000001011 
出力:3 
説明:入力バイナリ文字列00000000000000000000000000001011 has a total of three '1' bits.

例2:

入力:00000000000000000000000010000000 
出力:1 
説明:入力バイナリストリング00000000000000000000000010000000一「1」ビットの合計を有します。

例3:

入力:11111111111111111111111111111101 
出力:31 
説明:入力バイナリストリング11111111111111111111111111111101は31「1」ビットの合計を有します。

 

注意:

  • Javaなどの一部の言語では、何の符号なし整数型が存在しないことに注意してください。この場合、入力が符号付き整数型として説明すると、整数の内部バイナリ表現は、それは符号の有無と同じであるように、実装に影響を与えるべきではありません。
  • Javaでは、コンパイラが使用して符号付き整数を表し、  2の補数表記をしたがって、入力上の実施例3の符号付き整数を表します  -3

 

ファローアップ:

この関数が何回呼び出された場合、どのようにそれを最適化するのでしょうか?

 

パッケージleetcode.easy。

パブリッククラスNumberOf1Bits { 
	//あなたは符号なしの値として扱うのnする必要が
	公共のint型hammingWeight1(int型のn){ 
		int型のビット= 0; 
		INT = 1マスク。
		以下のために(INT i = 0; iが<32; I ++){ 
			IF((N&マスク)!= 0){ 
				ビット++。
			} 
			マスク<< = 1。
		} 
		ビットを返します。
	} 

	公共INT hammingWeight2(int型N){ 
		int型の和= 0。
		一方、(N!= 0){ 
			合計++。
			N&=(N - 1)。
		} 
		の和を返します。
	} 

	@ org.junit.Test 
	公共ボイド試験(){ 
		System.out.printlnは(hammingWeight1(-3))。
		System.out.println(hammingWeight2(-3))。
	} 
}

 

おすすめ

転載: www.cnblogs.com/denggelin/p/11706513.html