劍指offer系列之十 二進位制中1的個數

2021-07-08 15:19:30 字數 539 閱讀 1300

題目描述:

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。比如輸入9,9的二進位制表示是1001,1的個數是2,所以輸出2。

這有乙個重要結論:乙個數與該數減一的結果進行與運算,會把該數右邊(低位)第乙個1變為0,而該位左邊保持不變(高位)。可以舉乙個簡單的例子進行證明:比如1100(對應十進位制是12),減去1之後的結果是1011(也就是十進位制的11),兩個數進行與運算之後,我們發現最後的結果是1000(對應十進位制的8,當然這個8與後面沒有關係,可以略過)。這樣我們每進行一次的與運算就消去乙個1,這樣消到最後肯定是0了,所以我們可以在**中以這個為迴圈的終止條件。

基於以上分析,可以寫出如下的**(已被牛客ac):

package com.rhwayfun.offer;

public

class numberof1

return sum;

}public

static

void

main(string args)

}

劍指Offer 擴充套件 二進位制 小公尺

世界上有10種人,一種懂二進位制,一種不懂。那麼你知道兩個int32整數m和n的二進位制表達,有多少個位 bit 不同麼?輸入例子 1999 2299 輸出例子 7 分析 將兩個整數逐位進行比較,累加不同位的個數,直至兩個數都為0.比較兩個數的最後一位,然後分別右移一位,直至兩個數都為0.defin...

十二進位制轉二進位制 2018

1 逐個輸出對應的十進位制,用空格隔開 高位到地位 10 2 輸出對應的十進位制數 10 3 轉為二進位制,用4個位元組表示 10 例如 輸入a2 輸出 10 2 12200000000 00000000 00000000 01111010 思路 1 利用transfer char ch 將單個字元...

劍指Offer系列15 二進位制中1的個數

請實現乙個函式,輸入乙個整數,輸出該數二進位制表示中 1 的個數。例如,把 9 表示成二進位制是 1001,有 2 位是 1。因此,如果輸入 9,則該函式輸出 2。示例 1 輸入 00000000000000000000000000001011 輸出 3 解釋 輸入的二進位制串 0000000000...