思路:
当看到这个问题的时候,我就在想Java应该是封装了这些进制转换的方法。
但是当然也可以自己编写。考虑到正数那个还简单,和那个int转化成二进制有32位,前面都是0,无所谓,但是注意到负数,就比较麻烦了,先给正数的二进制各位取反还必须再给末尾加1。这又涉及到二进制的加法了。所以说还是直接转化为二进制,只计算1的位数就好了。
我查了一下:取自https://zhidao.baidu.com/question/13800579.html
十进制转成十六进制:
Integer.toHexString(int i)
十进制转成八进制Integer.toOctalString(int i)十进制转成二进制Integer.toBinaryString(int i)十六进制转成十进制Integer.valueOf("FFFF",16).toString()八进制转成十进制Integer.valueOf("876",8).toString()二进制转十进制Integer.valueOf("0101",2).toString()
然后就有了下面的代码:
public int NumberOf1(int n) {
int sum = 0;
String binarynum = Integer.toBinaryString(n);
for(int i = 0;i<binarynum.length();i++){
if(binarynum.charAt(i)=='1'){
sum++;
}
}
return sum;
}
随便说说:java API中封装了很多函数,很多我们不用再自己编写,我们可以直接利用,不用再想那些方法该如何实现。但是当然想自己了解的,还是可以自己查阅相应的API的。这样可以减轻我们的编程的负担和代码量。