面试题:统计整数的二进制形式1的个数

 题:请编写一个函数,让它把一个指定整数的二进制表示形式中的“1”的个数统计出来。

这题在JAVA下有几个解法:

1。设计一个把十进制转换为二进制的算法,再对其统计。

2。用Integer.toBinaryString方法,先把十进制转换为二进制,再对其统计。

3。因为整数在计算机中的表示形式就是二进制,所以我们无需对其转换,运用位操作符可直接操作它的二进制数。我们把1作为掩码,与要统计的整数进行&运算,就可判断整数的最低位是否为1了,然后对整数进行右移>>>1位(注意:是>>>,不是>>,因为如果整数是负数,前者在移位后会全补上零,这是JAVA特有的符号,而后者会根据符号位进行补全)。 

   public   static   int  numOnesInBinary( int  num) {
      
int count = 0;
      
while(num != 0){
          
if((num & 1== 1) count++;
          num 
>>>= 1;
      }

      
return count;
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值