public class 面试题10_二进制中1的个数 {
public static void main(String[] args) {
// System.out.println(Integer.toBinaryString(13));
// System.out.println(Integer.toBinaryString(12));
// System.out.println(Integer.toBinaryString(13&12));
//countNum0(-156);
countNum1(-2147483648);
System.out.println(Integer.toBinaryString(-2147483648));
//System.out.println(12&11);
}
//推荐解法
public static void countNum(int n){
int count=0;
while(n!=0){
count++;
n=n&(n-1);
}
System.out.println(count);
}
public static void countNum0(int n){
int count=0;
String str=Integer.toBinaryString(n);
char[] chs=str.toCharArray();
for (int i = 0; i < str.length(); i++) {
if(chs[i]=='1'){
count++;
}
}
System.out.println(count);
}
public static void countNum1(int n){
int count=0;
for (int i = 0; i < 32; i++) {
if((n&1)==1){
count++;
}
System.out.println(count);
n=n>>1;
}
System.out.println(count);
}
public static void countNum2(int n){
int count=0;
int flag=1;
for (int i = 0; i < 32; i++) {
//System.out.println(n&flag);
if((n&flag)!=0){
count++;
}
flag=flag<<1;
}
System.out.println(count);
}
}