【高速化】ビット演算 0x02
at TECH
31:デフォルトの名無しさん
06/09/28 08:34:46
2ビットごとにまとめる処理は、いわゆるシャフルだ
下位32ビットについて、
b = black & 0xffffffff;
b = ((b & 0xffff0000) << 16) | (b & 0xffff);
b = ((b & 0xff00ff00ff00) << 8) | (b & 0xff00ff00ff);
b = ((b << 4) | b) & 0x0f0f0f0f0f0f0f0f;
b = ((b << 2) | b) & 0x3333333333333333;
b = ((b << 1) | b) & 0x5555555555555555;
で間に0を入れ、白も同様に処理し、
x = b | (w << 1);
とすれば、2ビットごとにまとめることができる。
あとは >>30 の処理を行えば、下4行分のインデックスが求まる。
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5494日前に更新/206 KB
担当:undef