LeetCode_Number of Bits_for Java

本文介绍了一个Java方法,用于计算一个无符号整数的二进制表示中‘1’的个数(即汉明重量)。通过迭代右移并检查最低位的方式实现,适用于32位整数。

题目:

Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).

For example, the 32-bit integer ’11' has binary representation 00000000000000000000000000001011, so the function should return 3.

Answer:

public class Solution {
    // you need to treat n as an unsigned value
    public int hammingWeight(int n) {
	 int result = 0;
	 while(n != 0 ){
		 int bit = n & 1;
		 if(bit == 1)
			 result ++;
		 n>>>= 1;
	 }	
	 return result; 
    }
}

思考: 

1、java 没有 unsigned ,why, http://www.cnblogs.com/yuanyq/p/java_unsigned_types.html  这篇文章不错,都问到了java的设计者,一句话,简单。

2、对无符号的所以一开始考虑了很多问题,后来发现都没有用上,包括将其转换成long 

      long temp = n & 0x0FFFFFFFF  

3、对于long  , 定义long 的时候 要在最后加 L,否则是默认的int 奇怪我定义了long型的参数,传入 2的31次方,总是报错,不知道为什么。

4、Integer 自带将十进制转换成二进制字符串的方法,toBinaryString(int n)  ,更加高能的是提供了此bitCount(int n) , 再次感觉到 java 已经封装的不行了,什么方法都已经提供了,我们只需要熟悉API即可!!但是这样的结果就是Runtime很高,这也是java 永远比不上c++ 的地方。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值