问题描述: 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路: 很明显,可以将十进制整数转化为二进制表示字符串,再挨个数“1”的个数。当然,也可以通过除法运算与求余运算相结合解决。
代码:
import org.junit.Test;
public class NumberOf1 {
public int numberOf1(int n) {
String num = Integer.toBinaryString(n);
System.out.println(num);//十进制n的二进制字符串表示
int count = 0;
for(int i = 0;i < num.length();i++)
if(num.charAt(i)=='1')
count++;
return count;
}
@Test
public void test(){
System.out.println(numberOf1(15));
}
}
输出:
1111
4