Java怎么计算一个数的二进制前面有多少个0
在1之前有27个0。
怎么计算一个数在1之前有多少个0 展开
一个二进制数中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());
}
}
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;
}