package java_study.JianZhiOffer;
import org.junit.Test;
/**
* Created by ethan on 2015/6/23.
* 剑指offer中 No.10 二进制中1的个数
* 左右移和位与运算提升效率, 考虑负数,会造成死循环
*/
public class No10NumbersOf1 {
// 没有考虑负数
public int getNumOf1(int x){
int count=0;
while (x!=0){
if ((x&1)==1){
count++;
}
x=x>>1;
}
return count;
}
// 考虑负数的时候, 可以移动1
// 最终的终结位置是
public int getNumof1_2(int x){
int count=0;
int flag=1;
while (flag!=0){
if ((x&flag)!=0){
count++;
}
flag = flag<<1;
}
return count;
}
@Test
public void test(){
System.out.println(getNumOf1(4321111));
System.out.println(getNumof1_2(4321111));
}
}
一个整数二进制中1的个数
最新推荐文章于 2023-02-25 22:03:28 发布