我看到了链接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 等,它可以工作,但我根本不明白为什么这 3 行移位和按位运算可以实现它。