【发布时间】:2018-09-25 21:04:56
【问题描述】:
我是通过一个面试问题来的。反转 32 位无符号整数的位。我写的这段代码完全没问题:
uint32_t reverseBits(uint32_t n) {
for(int i = 0, j = 31; i < j; i++, j--) {
bool iSet = (bool)(n & (1 << i));
bool jSet = (bool)(n & (1 << j));
n &= ~(1 << j);
n &= ~(1 << i);
if(iSet) n |= (1 << j);
if(jSet) n |= (1 << i);
}
return n;
}
在此之后,有一个后续问题 - 如果多次调用此函数,您将如何优化它?我不知道在那种情况下应该如何优化解决方案。
【问题讨论】:
-
必须链接到Bit Twiddling Hacks。
-
您认为可以改进的工作代码?这看起来像是 Coooooooode Review! 的工作我已链接到如何提问页面,因为值得一读以确保您发布的任何帖子都符合他们的要求。
标签: c++ algorithm bit-manipulation