進数の[安全性を証明するオファー] 1

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;
    }
};
公開された10元の記事 ウォンの賞賛0 ビュー559

おすすめ

転載: blog.csdn.net/weixin_44922845/article/details/104107365