天天看點

三種方法判斷二進制中1的個數

餘數方法(最簡單,最易了解的算法):

但是如果為負數結果就很難預料:

三種方法判斷二進制中1的個數

修改為無符号類型則可以解決這個問題:

三種方法判斷二進制中1的個數

位操作方法(難度中):

通過移位操作和1作比較,将兩個數進行位運算,結果位1則計數一次反正不執行。

通過一個算法判斷程式執行次數推斷1的個數:(執行效率最高)

算法:n=n&(n-1):

輸入:13

//1101    n     13

&

//1100    n-1   12

//1100    指派給n   12

//1011    n-1       11

//1000     n       8

//0111    n-1    7

//0000

運算一次則讓最右邊少1,直到全為0為止就可以了。

注:本次程式在VS2019中測試。

繼續閱讀