我看到的鏈接http://pvtridvs.net/pool/bithacks.html#BitReverseObvious這裏發佈的代碼:反向位明顯的方式
unsigned int v; // reverse the bits in this
unsigned int t = v; // t will have the reversed bits of v
int i;
for (i = sizeof(v) * 8 - 1; i; i--)
{
t <<= 1;
v >>= 1;
t |= v & 1;
}
有人能幫忙解釋一下爲什麼這個樣子,簡單的算法的工作?我在紙上測試了一些最簡單的例子,比如說4位0011等等,它可以工作,但我不明白爲什麼這三行移位和按位操作可以實現它。
謝謝,
該URL有「第一種方法需要大約18個操作...」,我不同意。第一種方法每次迭代執行6次操作,其他180次操作執行32次迭代。 – 2013-02-20 04:20:38