算法:二进制中1的个数
/**
* 题目:二进制中1的个数
* 描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
* 解决方案: ①如果确定是正数:将这个整数target的二进制与1进行与运算,如果每次结果等于1,那么这个target的二进制最右边就为1,可以定义一个变量count来进行记录二进制中1的个数,
* ,并且每次计算完之后对target进行右移运算。 直到target等于0;此时count就是二进制中1的个数。
* ②负数:将与target的做与运算的1,进行左移,直到1等于0
* */
public class One { public static int one(int num) { int count =0; while(num!=0) { if((num & 1) == 1) { count++; } num = num >> 1; } return count; } public static int two(int num ) { int count = 0; int flag = 1; while(flag != 0) { if((num & flag) == 1 ) { count++; } flag = flag << 1; } return count; } public static void main(String[] args) { System.out.println(one(7)); System.out.println(two(-7)); } }
天助自助者