- 您經常使用按位運算「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