☆C/C++☆ちょっと役立つプログラム作らない?
■ このスレッドは過去ログ倉庫に格納されています
0078デフォルトの名無しさん
2005/08/04(木) 20:13:58// 各整数型のビット数を数える関数
// >>が多過ぎって怒られたから≫で代用w
static inline unsigned count(unsigned long bits)
{
bits -= bits ≫ 1 & 0x55555555;
unsigned tmp = (bits & 0x33333333) + (bits ≫ 2 & 0x33333333);
tmp += tmp ≫ 4;
tmp &= 0x0f0f0f0f;
tmp += tmp ≫ 8;
tmp += tmp ≫ 16;
return (unsigned char) tmp;
}
static inline unsigned count(unsigned short bits)
{
bits -= bits ≫ 1 & 0x5555;
unsigned tmp = (bits & 0x3333) + (bits ≫ 2 & 0x3333);
tmp += tmp ≫ 4;
tmp &= 0x0f0f;
tmp += tmp ≫ 8;
return (unsigned char) tmp;
}
static inline unsigned count(unsigned char bits)
{
bits -= bits ≫ 1 & 0x55;
unsigned tmp = (bits & 0x33) + (bits ≫ 2 & 0x33);
tmp += tmp ≫ 4;
return tmp & 0x0f;
}
■ このスレッドは過去ログ倉庫に格納されています