剑指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 }