admin管理员组文章数量:1794759
华为计算机怎么算进制,2015华为机试—— 计算二进制数的0的个数
描述:
输入一个10进制数字,请计算该数字对应二进制中0的个数,注意左数第一个1之前的所有0都不需要计算。不需要考虑负数的情况。
题目类别:位运算
难度:初级
运行时间限制:无限制
内存限制:无限制
阶段:入职前练习
输入:
要计算的十进制非负数
输出:
二进制中第一个1之后0 的个数
样例输入:
2
样例输出:
1
解题思路:
对于给定的数n,使用位运算:n=n&(n-1)可计算出对应二进制中1的个数,为count1。将input=n,input=input>>1逐个获取input中1的个数,为count2,如果input&1==1,则此时对应位上为0,记数t加1操作,当count1=count2时,循环终止,此时可获得t,即为0个个数,具体实现看下面代码。
代码如下:
public class number_ofZero_bits
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
while (sc.hasNext())
{
int input=sc.nextInt();
if (input<0)
{
return;
}
int count1=0,count=0,t=0;
int n=input;
while (n!=0)
{
n=n&(n-1);
count++;
}
while (input!=0)
{
if ((input&1)==1)
{
count1++;
if (count1==count)
{
break;
}
}
else
{
t++;
}
input=input>>1;
}
System.out.println(t);
}
sc.close();
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:blog.csdn/zzc8265020/article/details/46923997
版权声明:本文标题:华为计算机怎么算进制,2015华为机试—— 计算二进制数的0的个数 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686574394a83479.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论