1の個数を数える。マスクをずらしていって、そこに1が立っていたらインクリメントする。
#include <iostream> using namespace std; uint8_t hamming_weight(uint16_t val){ uint8_t sum = 0; for(int i=0; i<16; i++){ if((1 << i) & val) sum++; } return sum; } int main(void){ printf("%d\n", hamming_weight(0b11110011)); return 0; }