← 一覧へ戻る

立っているビットの数 LV2 ・ 20点

問題

非負整数 N が与えられます。N を 2 進数で表したとき、1 になっているビットの個数(ポップカウント)を出力してください。

例えば 13 は 2 進数で 1101 なので、1 のビットは 3 個です。

制約

入力

入力は以下の形式で標準入力から与えられます。

N

出力

1 のビットの個数を半角数字で 1 行に出力してください。

入出力例

入力出力
13
3
0
0

💡 学習アドバイス

10 進数と 2 進数の橋渡しをする問題で、基本情報でも頻出のテーマです。やり方を 1 つ覚えておきましょう。

ビット演算(&>>)を使うとシンプルに書けます。2 進数を「下の桁から 1 枚ずつめくっていく」イメージを持つと、ぐっと分かりやすくなります。

コーディング(ここで挑戦!)

下のエディタにコードを書き、「コンパイル・実行」で試し、「提出」で全テスト採点します。言語は C / C++ / Java から選べます。全テスト合格でこの問題はクリア(👑)です。

本番の編集・コンパイル・実行・採点は Exercode 上で行います。このページは予習・練習用です(実行は Wandbox の実コンパイラを利用)。