求一個數二進制中1的個數

 

問題:

     求一個數二進制中1的個數?

 

分析:

     首先我們應該注意到這裏的“一個數”,並沒有指明是正整數,所以這裏就不能用傳統的方法將這個數轉化二進制,然後去求1的個數。  因爲負數會以補碼的形式存在於內存。這裏提供2中方法解決問題。

 

方法一:

 

 

       二進制在內存中以32位存在,取出每一位判斷是否爲1,這裏會用到 &運算 和 右移 運算符  

     

 

 

 

缺點:  每次必須循環32次,效率低。

 

方法二:

     把一個整數減去一,再與原整數做與元算,會把該整數最右邊一變爲零,則一個二進制中有多少個一就可以進行多少次操作

 

 

 

    這道題是以前做過的題,現在拿出來寫是爲了提醒自已,有時候不論是學習,還是其他的事,換一種思路換一種方法,或許會得到不一樣的效果。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章