__builtin_popcount を使ってみる (C++)
C++
Published: 2020-01-13

やったこと

2進数で1を数えるため、 __builtin_popcount を使ってみます。

確認環境

$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

調査

test.cpp

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int main() {
    for (int i = 0; i < (1 << 3); i++) {
        cout << bitset<8>(i);
        printf(" 1ビットが立っている数: %d\n", __builtin_popcount(i));
    }
}

出力結果

00000000 1ビットが立っている数: 0
00000001 1ビットが立っている数: 1
00000010 1ビットが立っている数: 1
00000011 1ビットが立っている数: 2
00000100 1ビットが立っている数: 1
00000101 1ビットが立っている数: 2
00000110 1ビットが立っている数: 2
00000111 1ビットが立っている数: 3

参考