位運算求平均值

在程序中,使用位運算比加減乘除運行效率要高,尤其是在需要多次迭代或者重複大量計算時。

以求兩個數的平均值運算爲例,應用場景可以參見二分法查找有序數組。

first代表數組第一個元素,last代表數組最後一個元素
那麼我們可以使用位運算實現mid = (first+last)/2

mid = first + ((last - first) >> 1);

容易想通等式是成立的。“>>”運算符相當於對運算符前的數值進行除二運算。

mid = first + ((last - first) >> 1)
    = first + (last - first)*(1/2)
    = (first+last)/2 = mid 
發佈了45 篇原創文章 · 獲贊 6 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章