kclib1のページ#3
(5) kpopCount32
- int kpopCount32(unsigned int b)
- 普通のポップカウントです。与えられた引数の中でビットが1になっている個数を数えます。
- これはCPUのpopcnt命令を使って高速化しようとかそういうことは考えていません。古い環境でも確実に計算できればそれで十分なケース向けです。
- こんなの関数にするまでもない規模なのですが、たまに書き方を忘れるので、その時に使います。
(6) kpopCount64
- int kpopCount64(unsigned long long b)
- 普通のポップカウントのlong long版です。与えられた引数の中でビットが1になっている個数を数えます。
- これはCPUのpopcnt命令を使って高速化しようとかそういうことは考えていません。古い環境でも確実に計算できればそれで十分なケース向けです。
- こんなの関数にするまでもない規模なのですが、たまに書き方を忘れるので、その時に使います。
(7) kgetMsb32
- unsigned int kgetMsb32(unsigned int i)
- 与えられた引数の最上位ビット位置を抽出します。bsr命令のようにビット位置を返すのではなく、0x0123に対して0x0100を返すように振る舞います。
- 引数に0を与えた場合は想定していませんが、下記の実装からすると1が返ることになりそうです。これは引数に1を与えた場合と同じになっています。
- こんなの関数にするまでもない規模なのですが、たまに書き方を忘れるので、その時に使います。
こめんと欄
|