输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

思路:

当看到这个问题的时候,我就在想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的。这样可以减轻我们的编程的负担和代码量。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值