題目:請實現一個函數,輸入一個整數,輸出該數二進制表示中1的個數。例如把9表示成二進制是1001,有2位是1。所以若是輸入9,該函數輸出2。java
把一個整數減去1,再和原整數作與運算,會把該整數最右邊一個1變成0。那麼一個整數的二進制表示中有多少個1,就能夠進行多少次這樣的操做。函數
package aigorithm; public class CodingInterviewsTen { public static void main(String[] args) { int result = NumberOf1Solution10(2); System.out.println(result); } public static int NumberOf1Solution10(int n ){ int count = 0; while (n>0){ ++count; n = (n-1)&n; } return count; } }
作到這題的時候,發現本身的思想在被做者的想法限制。在已有是思路下突破是一件困難的事情啊。深入以爲本身的想法不夠發散。code