正整數轉二進位制,數字位數為1的個數

2021-08-28 04:59:45 字數 1093 閱讀 3686

編寫乙個函式,輸入是乙個無符號整數(我理解為正整數),返回其二進位制表示式中數字位數為 『1』 的個數(也被稱為漢明重量)。

示例 :

輸入: 11 輸出: 3 解釋: 整數 11 的二進位制表示為 00000000000000000000000000001011

示例 2:

輸入: 128

輸出: 1

解釋: 整數 128 的二進位制表示為 00000000000000000000000010000000

分析:

1,要點:除二取餘,倒序排列,高位補零。

2,方法:將正的十進位制數除以二,得到的商再除以二,依次類推直至商為0或1時為止,然後在旁邊標出各步的餘數,最後倒著寫出來,高位補零。

3,注:計算機內部表示數的位元組單位是定長的,如8位,16位,或32位。所以,位數不夠時,高位補零。

2 丨 121     1

————————————————

2 丨 60 0

————————————————

2 丨 30 0

————————————————

2 丨 15 1

————————————————

2 丨 7 1

————————————————

2 丨 3 1

————————————————

2 丨 1 1

————————————————

2 丨 0 0

共有五個數字位數為1

那麼可以參考下邊的**

public

class solution else

}system.out.println("正整數"+n+"轉為二進位制時數字位數為1的個數為"+count);

}}

數值轉換 十進位制正整數轉二進位制

今天朋友去面試,問到一基礎題,實現正整數到二進位制的轉換。因為對基礎掌握的不牢,此題並未能做出正確解答。我在給他講解一番後,他恍然大悟。對於十進位制正整數到二進位制的轉換其實很簡單,用2輾轉相除至結果為1,將餘數和最後的1從下向上倒序寫,就是整數所對應的二進位制值。例如5的二進位制就是101 如圖 ...

理解十進位制整數轉二進位制整數

演算法 第四版 中的習題 1.3.5 中有這樣一段 stacks new stack while n 0 for int d s system.out.print d system.out.println 其作用是列印十進位制整數 n 的二進位制表示。下面解釋該演算法背後的道理。為簡化問題,預設輸入...

二進位製煉表轉整數

給你乙個單鏈表的引用結點 head。鍊錶中每個結點的值不是 0 就是 1。已知此煉表是乙個整數數字的二進位制表示形式。請你返回該鍊錶所表示數字的 十進位制值 示例 1 輸入 head 1,0,1 輸出 5 解釋 二進位制數 101 轉化為十進位制數 5 示例 2 輸入 head 0 輸出 0 示例 ...