uint64_t があり、uint64_t の各バイトの上位ビットのみを気にするとします。そのようです:
uint32_t: 0000 ... 1000 0000 1000 0000 1000 0000 1000 0000 ---> 0000 1111
次よりも速い方法はありますか?
return
(
((x >> 56) & 128)+
((x >> 49) & 64)+
((x >> 42) & 32)+
((x >> 35) & 16)+
((x >> 28) & 8)+
((x >> 21) & 4)+
((x >> 14) & 2)+
((x >> 7) & 1)
)
別名、x をシフトし、マスキングし、各バイトに正しいビットを追加しますか? これは多くのアセンブリにコンパイルされ、より迅速な方法を探しています... 私が使用しているマシンには SSE2 命令までしかなく、役立つ SIMD ops を見つけることができませんでした。
助けてくれてありがとう。