unsigned int s = sizeof(v) * CHAR_BIT; // bit size; must be power of 2
unsigned int mask = ~0;
while ((s >>= 1) > 0)
{
mask ^= (mask << s);
v = ((v >> s) & mask) | ((v << s) & ~mask);
}
from Bit Twiddling Hacks
【在 r****o 的大作中提到】 : n是bits的位数.
d********e 发帖数: 132
5
能解释一下思路吗?
【在 b****r 的大作中提到】 : unsigned int s = sizeof(v) * CHAR_BIT; // bit size; must be power of 2 : unsigned int mask = ~0; : while ((s >>= 1) > 0) : { : mask ^= (mask << s); : v = ((v >> s) & mask) | ((v << s) & ~mask); : } : from Bit Twiddling Hacks