劍指offer 10 二進位制數字1的個數

2021-09-28 11:53:05 字數 449 閱讀 4769

輸入乙個int型數字,輸出它作為二進位制的1的個數。如9的二進位制為1001,有2個1,則輸出2。

法一:因為int型有4個位元組,一共32位,每次將輸入右移1,並和1進行「與」操作。將結果累加,則為1的個數。

public class test10

return result;

}public static void main(string args)

}

法二:有個神奇的結論。乙個二進位制數字減一,在和自己「與」操作。就可以把最後的乙個1變為0。如10100&10011=10000。

下面為方法體

public static int numberofone2(int n) 

// 返回求得的結果

return result;

}

劍指offer 10 二進位制中1的個數

請實現乙個函式,輸入乙個整數,輸出該數二進位制表示中1的個數。例如把9表示成二進位制是1001,有2位是1,因此如果輸入9,該函式輸出2.思路 1 針對正數,把n左移 把整數和1做位與運算看結果是不是0就知道了。1除了最右邊的一位之外所有的位都是0 除法的效率比移位運算要低很多,在實際程式設計中應盡...

劍指Offer10 二進位制中1的個數

題目 請實現乙個函式,輸入乙個整數,輸出該二進位制表示中1的個數。例如把9表示成二進位制是1001,有2位是1。因此如果輸入9,該函式輸出2。解題思路 常規的解法可以去遍歷整數對應二進位制的每一位,比如 數字9的二進位制1001,依次將每一位的數字與1進行 與 運算,若結果為1則表明對應的位數為1 ...

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

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