編寫乙個函式,輸入是乙個無符號整數(我理解為正整數),返回其二進位制表示式中數字位數為 『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 示例 ...