generated at
立っているビットの数を数え

algorithmの考え方
具体的で小さな数から試してみる
1桁
そのまま返せばいい
2桁
00,01,10,11の4パターンある
それぞれのパターンと立っているビット数との関係
chart
bitcount
0000
0101
1001
1110
1桁目と2桁目をそれぞれ1つの値と考えて足せばいい
11なら、01+01=10(2個)となる
1桁目は01,2桁目は10でマスクすればとりだせる

4桁
0111→0011
1101→0011
2桁ずつ足せばいい
0111→01,10→0011
0101と1010でマスクしてそれぞれのブロックの1桁目と2桁目を取り出して足す
そのあと1100と0011でブロックごとに取り出して足す
一般化
2^n桁のデータのビット数を計算するには、n回マスクして足せばいい

#2022-02-06 09:17:22