演算法學習 計算出二進位制數中1的個數

2021-07-10 01:06:40 字數 702 閱讀 2539

問題描述:計算出二進位制數中1的個數。

解法與分析:使用乙個數1來「與」二進位制數中每一位,若值為1則1的個數加一。

/**

* 通過flag左移做乙個迴圈來與num的每一位,若與計算的結果不為0,則1的個數++

*@param num

*@return

*/public

static

intcalc2(int num)

flag<<=1;

}return count;

}

解法與分析:設二進位制數為num,若num不為0時,num-1後的值與num相與都會消除乙個1,按照這一點,可以很快計算出1個個數。

/**

* num不為0時,num-1後的值與num相與都會消除乙個1,按照這一點,可以很快計算出1個個數,最佳演算法

*@param num

*@return

*/public

static

intcalc3(int num)

return count;

}

設計演算法計算出二進位制數中1的個數

相信不少人都被問到過 如何設計乙個簡單的程式來判斷乙個二進位制數中1的個數有多少。問題雖簡單但卻有不同的解決方法,我自己發現了兩種比較常規的方法,並記錄於此 這種方法相信很多人只要稍加思索就可以想到,要想知道乙個二進位制數有多少個1,只要我們進行簡單的位操作,找出每一位具體是多少這樣,將1加到一起就...

如何以最快的速度計算出乙個二進位制數中1的個數

題目 如何以最快的速度計算出乙個二進位制數中1的個數 重點在於,這裡有十億或萬億個int數字,怎樣做才能優化演算法呢?解答 統計乙個位元組序列中1的個數,我首先想到的是最簡單,把這個數每次右移一位,然後與0x01邏輯與進行統計,相當於總共將真個位元組序列遍歷了一遍。然而仔細想想,乙個十億或萬億的位元...

計算二進位制數中1的個數

本文提供了三種方法,分別計算乙個數的二進位制表示中1的個數。方法和解釋分別見count1,count2,count3函式。只有count1不能滿足負數要求 會死迴圈進去 其他兩個都可以操作32b以內正負數。count1 每次將x末位與1相與,看最後以為是否為1,然後將x右移 count2 將變數y從...