Java怎么计算一个数的二进制前面有多少个0

比如18,在一个32位的计算机内部被表达为00000000000000000000000000011000。在1之前有27个0。怎么计算一个数在1之前有多少个0... 比如18,在一个32位的计算机内部被表达为00000000000000000000000000011000。
在1之前有27个0。
怎么计算一个数在1之前有多少个0
展开
 我来答
黑马程序员
2017-12-04 · 改变中国IT教育,我们正在行动
黑马程序员
黑马程序员为大学毕业后,有理想、有梦想,想从事IT行业的年轻人改变自己的命运。黑马程序员成就IT黑马
向TA提问
展开全部

一个二进制数中0的个数【求1的个数同理】有两种操作方式,代码如下:

  • package comz;  

  • public class TT {  

  • public static void main(String[] args) {  

  • test();  

  • }  

  • /** 

  • * 统计二进制数中0的个数[除法操作] 

  • */  

  • public static void test() {  

  • int d = 8;  

  • int count = 0;  

  • while (d != 0) {  

  • if (d % 2 == 0) {  

  • count++;  

  • }  

  • d /= 2;  

  • }  

  • System.out.println(count);  

  • }  

  • /** 

  • * 统计二进制数中0的个数[与操作] 

  • */  

  • public static void test1() {  

  • int d = 8;  

  • int count = 0;  

  • while (d != 0) {  

  • if ((d & 0x01) != 1) {  

  • count++;  

  • }  

  • d >>= 1;  

  • }  

  • System.out.println(count);  

  • }  

  • }  

上面的两种方法分别是除法操作和位操作。推荐位操作。可以直接显示出0的个数。

匿名用户
2017-12-04
展开全部
import java.util.*;
class Main{
  public static void main(String[] args){
      String str=Integer.toBinaryString(18);
      int len=32-str.length();
      for(int i=0;i<len;i++){
          str="0"+str;
      }
      String reg="^(0*)1.*$";
      String tmp=str.replaceAll(reg,"$1");
      System.out.println(tmp.length());
  }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幸福因你们而生
2018-07-31
知道答主
回答量:1
采纳率:0%
帮助的人:844
展开全部
public static getNumOfLeadingZeros(int i){
if(i == 0) return 32;
int n = 1;
if(i>>>16 ==0){n+=16;i=i<<16;}
if(i>>>24 ==0){n+=8;i=i<<8;}
if(i>>>28 ==0){n+=4;i=i<<4;}
if(i>>>30 ==0){n+=2;i=i<<2;}
n=n-i>>>31;
return n;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式