kclib1_0003
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* kclib1のページ#3
-(by [[K]], 2019.04.16)
** (5) kpopCount32
-int kpopCount32(unsigned int b)
--普通のポップカウントです。与えられた引数の中でビットが1...
--これはCPUのpopcnt命令を使って高速化しようとかそういうこ...
--こんなの関数にするまでもない規模なのですが、たまに書き...
----
-[内部実装]
int kpopCount32(unsigned int b)
{
b -= b >> 1 & 0x55555555U;
b = (b & 0x33333333U) + (b >> 2 & 0x33333333U);
b = (b + (b >> 4)) & 0x0f0f0f0fU;
return (b * 0x01010101U) >> 24;
}
** (6) kpopCount64
-int kpopCount64(unsigned long long b)
--普通のポップカウントのlong long版です。与えられた引数の...
--これはCPUのpopcnt命令を使って高速化しようとかそういうこ...
--こんなの関数にするまでもない規模なのですが、たまに書き...
----
-[内部実装]
int kpopCount64(unsigned long long b)
{
b -= b >> 1 & 0x5555555555555555ULL;
b = (b & 0x3333333333333333ULL) + (b >> 2 & 0x333333...
b = (b + (b >> 4)) & 0x0f0f0f0f0f0f0f0fULL;
return (b * 0x0101010101010101ULL) >> 56;
}
** (7) kgetMsb32
-unsigned int kgetMsb32(unsigned int i)
--与えられた引数の最上位ビット位置を抽出します。bsr命令の...
--引数に0を与えた場合は想定していませんが、下記の実装から...
--こんなの関数にするまでもない規模なのですが、たまに書き...
----
-[内部実装]
unsigned int kgetMsb32(unsigned int i)
{
i >>= 1;
i |= i >> 1;
i |= i >> 2;
i |= i >> 4;
i |= i >> 8;
i |= i >> 16;
return i + 1;
}
* こめんと欄
#comment
終了行:
* kclib1のページ#3
-(by [[K]], 2019.04.16)
** (5) kpopCount32
-int kpopCount32(unsigned int b)
--普通のポップカウントです。与えられた引数の中でビットが1...
--これはCPUのpopcnt命令を使って高速化しようとかそういうこ...
--こんなの関数にするまでもない規模なのですが、たまに書き...
----
-[内部実装]
int kpopCount32(unsigned int b)
{
b -= b >> 1 & 0x55555555U;
b = (b & 0x33333333U) + (b >> 2 & 0x33333333U);
b = (b + (b >> 4)) & 0x0f0f0f0fU;
return (b * 0x01010101U) >> 24;
}
** (6) kpopCount64
-int kpopCount64(unsigned long long b)
--普通のポップカウントのlong long版です。与えられた引数の...
--これはCPUのpopcnt命令を使って高速化しようとかそういうこ...
--こんなの関数にするまでもない規模なのですが、たまに書き...
----
-[内部実装]
int kpopCount64(unsigned long long b)
{
b -= b >> 1 & 0x5555555555555555ULL;
b = (b & 0x3333333333333333ULL) + (b >> 2 & 0x333333...
b = (b + (b >> 4)) & 0x0f0f0f0f0f0f0f0fULL;
return (b * 0x0101010101010101ULL) >> 56;
}
** (7) kgetMsb32
-unsigned int kgetMsb32(unsigned int i)
--与えられた引数の最上位ビット位置を抽出します。bsr命令の...
--引数に0を与えた場合は想定していませんが、下記の実装から...
--こんなの関数にするまでもない規模なのですが、たまに書き...
----
-[内部実装]
unsigned int kgetMsb32(unsigned int i)
{
i >>= 1;
i |= i >> 1;
i |= i >> 2;
i |= i >> 4;
i |= i >> 8;
i |= i >> 16;
return i + 1;
}
* こめんと欄
#comment
ページ名: