劍指offer編程題Java實現——面試題10二進制中1的個數。本站提示廣大學習愛好者:(劍指offer編程題Java實現——面試題10二進制中1的個數)文章只能為提供參考,不一定能成為您想要的結果。以下是劍指offer編程題Java實現——面試題10二進制中1的個數正文
題目:
請實現一個函數,輸入一個整數,輸出該整數二進制表示中1的個數。例如,把9表示成二進制是1001,有2位是1,該函數輸出2
解法:把整數減一和原來的數做與運算,會把該整數二進制表示中的最低位的1變成0,與運算進行多少次就有多少個1。
1 package Solution; 2 /** 3 * 劍指offer面試題10:二進制中1的個數 4 * 題目:請實現一個函數,輸入一個整數,輸出該整數二進制表示中1的個數。 5 * 例如,把9表示成二進制是1001,有2位是1,該函數輸出2 6 * 解法:把整數減一和原來的數做與運算,會把該整數二進制表示中的最低位的1變成0,與運算進行多少次就有多少個1 7 * @author GL 8 * 9 */ 10 public class No10BitOperation { 11 12 public static void main(String[] args) { 13 int number1=11; 14 System.out.println("整數11的二進制中1的個數為:"+numberOfOne(number1)); 15 //Java中的int類型整數由4字節32位組成 16 int number2=-11; 17 System.out.println("整數11的二進制中1的個數為:"+numberOfOne(number2)); 18 19 20 } 21 public static int numberOfOne(int number){ 22 int count=0; 23 24 while(number!=0){ 25 count++; 26 number=number&(number-1); 27 } 28 return count; 29 } 30 31 }