通过查看最后一位来检查数字是否均匀 - 有没有像这样的其他"技巧"?

zer*_*ble 7 c++ bit-manipulation

最近我发现,如果我需要查看变量是偶数(还是奇数),我只能看看变量的最后一位是否等于0.这个发现在实现时取代了少数模2计算,因此整个函数运行得更快.

还有像这样的"技巧",使用位可以替代其他计算,从而改善功能执行时间吗?

jas*_*son 22

我怀疑通过等效的按位运算替换模2计算的使用产生了更快的执行时间.值得一提的任何C++编译器都会编译n % 2并运行n & 1相同的机器指令.

谨防使用bit-twiddling hacks作为优化.首先,并不总是很清楚您正在优化的功能是瓶颈.其次,生成的代码通常难以维护,更可能不正确或有微妙的错误.这就是着名引文Knuth所说的"我们应该忘记效率低,大约97%的时间说:过早的优化是所有邪恶的根源." 省力.

如果你真的必须追求这个主题,Bit Twiddling Hacks包含一系列有趣的黑客.