2進数の1の数
タイトル
32ビット整数入力、二進数の出力は、数1を表します。
注意:
- 絶対値でコンピュータで表され、負の数を補完します。
サンプル1
入力:9
出力:2
説明:9表現は、バイナリ1001 2 1の合計です。
サンプル2
入力-2
出力:31
説明:2コンピュータにおいては、11111111111111111111111111111110として表される
31 1の合計。
問題の解決策
右上ネガ自動的負直接右シフト演算署名されている場合、1を満たすため、エラーが発生しTLE
そこでここでは、符号なしに署名した数のキャストに変換する必要があります
class Solution {
public:
int NumberOf1(int n) {
int sum = 0;
unsigned int un = n;
while (un) {
if (un & 1) sum ++;
un >>= 1;
}
return sum;
}
};