- 您经常使用按位运算“hacks”来做某种 优化?它在哪种情况下真的有用?
示例:而不是使用如:使用按位运算
if (data[c] >= 128) //in a loop
sum += data[c];
你写:
int t = (data[c] - 128) >> 31;
sum += ~t & data[c];
当然假设它为这个具体情况相同的预期结果。
- 它值得吗?我觉得它是不可读的。你多久碰到一次这样的问题?
注:我看到这个代码在这里选择的答案:Why is processing a sorted array faster than an unsorted array?
数组是排序的吗?数据多久才符合if语句? 50%,25%,75%? – Skylion
那么在另一个问题,排序使它更有效率..但我问的是使用按位运算来做同样的优化没有排序或使用if()..我更关心的可读性和是否是矫枉过正 – Memo
这取决于。 if语句每秒被使用1,000,000次? (Exageration)在某些应用程序中,如信号处理中处理能力造成瓶颈的位运算非常有用。 – Skylion