ネタ元 → ぱぱっと書かせるプログラムの問題
与えられた自然数(0を含む)が2のべき乗数か否か判定し
そのbooleanを返すインターフェイス isAPo2 を作成せよ
僕が呈示した回答がコレ
#include <bitset>
bool isAPo2(int num) {
return std::bitset<64>(num).count() == 1;
}
標準C++ライブラリで提供されてるbit集合クラス: bitset を使いました。
std::bitset<N> は長さNのbit列を表します。
で、bitset<N> のコンストラクタ bitset<N>::bitset(unsigned long value) は
valueをbit列とみなしてコンストラクトします。
んでもってメソッド count() はbit列中の1の数を返してくれます。
numが2のベキならbit列中の1の数は1だから...ってスンポー