非負整数 N が与えられます。N を 2 進数で表したとき、1 になっているビットの個数(ポップカウント)を出力してください。
例えば 13 は 2 進数で 1101 なので、1 のビットは 3 個です。
入力は以下の形式で標準入力から与えられます。
N
1 のビットの個数を半角数字で 1 行に出力してください。
| 入力 | 出力 |
|---|---|
13 | 3 |
0 | 0 |
10 進数と 2 進数の橋渡しをする問題で、基本情報でも頻出のテーマです。やり方を 1 つ覚えておきましょう。
N % 2、または N & 1)がその桁のビットN / 2、または N >> 1)と次の桁へ進むビット演算(& と >>)を使うとシンプルに書けます。2 進数を「下の桁から 1 枚ずつめくっていく」イメージを持つと、ぐっと分かりやすくなります。
下のエディタにコードを書き、「コンパイル・実行」で試し、「提出」で全テスト採点します。言語は C / C++ / Java から選べます。全テスト合格でこの問題はクリア(👑)です。
本番の編集・コンパイル・実行・採点は Exercode 上で行います。このページは予習・練習用です(実行は Wandbox の実コンパイラを利用)。