(x&y) + ( (x^y)>>1 )證實

對於位運算求兩個數的平均值問題,(整形數據) int  average(int x,int y) { return ( (x&y) + ( (x^y)>>1 ) ); } 給出兩個整數,求出結果。 剛開始看到這道題的作法就是x和y轉換爲二進制,而後計算出結果。在沒有辦法的狀況下這樣作也能夠得出結果。 跟你想象的一點不差,這裏確實有捷徑。 題目中的&和^都是位運算,因此咱們有必要研究數據的對位狀況。
相關文章
相關標籤/搜索