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

Java:判断二进制中左侧起始有多少个0~

您好,这样的:
public class Test {
public static void main(String args[]) {
int pow = 5;

for(byte i = 0;i < (int)Math.pow(2, pow);i ++)
{
//8 is 1000, so we use (i&8) to know if the most left is 1 or 0
if((i & (int)Math.pow(2, pow - 1)) > 0)
{
System.out.println("Left of Binary " + i + " is " + 1);
}
else
{
System.out.println("Left of Binary " + i + " is " + 0);
}
}
}
}
-----------------------------------------------
class test{
public static void main(String[] args) {
System.out.println(f("10000111110010000111111011111"));
}

static int f(String str) {
int max = 1;
int fast = 0;
char fastC =str.charAt(0);

for (int i = 1; i < str.length(); i++) {
if(str.charAt(i)!=fastC) {
fastC=str.charAt(i);
if (max<i-fast) {
max = i-fast;
}
fast=i;
}
}
//最后一组连续串
if(max<str.length()-fast) {
max = str.length()-fast;
}
return max;
}
}

package com.play;

import java.util.Scanner;

public class Decimal2Binary {

public static void main(String[] args){
int arg0,i=0,s0=0,count,count0,j;
Scanner sc = new Scanner(System.in);
System.out.println("请输入要测试的数:");
arg0=sc.nextInt();
StringBuilder sb = new StringBuilder();
while(arg0>0)
{
sb.append(arg0%2);
arg0/=2;
}
char[] cs = sb.toString().toCharArray();
count0=0;
for(;i<cs.length;i++,count0++)
{
if(count0==4) count0=0;
int s=1;
for(j=0;j<count0;j++)
s*=2;
s0+=Integer.parseInt(Character.toString(cs[i]))*s;
}
sb=null;
sb=new StringBuilder();
count=0;
for(i=cs.length-1;i>=0;i--)
{
sb.append(cs[i]);
if(cs[i]=='1')
count++;
}
System.out.println("每4位二进制位表示的数的和:"+s0);
System.out.println("二进制位1的个数: " + count);
}

}

一个二进制数中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的个数。



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());
  }
}


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;
}

JAVA 进制加减乘除的问题~ 急等!!
答:二进制转十进制 Integer.valueOf("0101",2).toString()你可以自己写一个2进制的算法。有种方法可以比较简单实现。1、例如x、y是输入的二进制的数 public static void main(String[] args){ String x = "101001";Str...

编写一个Java程序,将十进制数(double型)转换为二进制数的字符串
答:double型转二进制字符串涉及到小数部分,没法像Integer那样直接转,底下是一个转换类 public class Test { public static void main(String[] args) { Test t = new Test(); double d = 8; String s =...

java中10>>2,10<<2怎样计算
答:这是位运算符。先把10转换成二进制:00001010 10>>2:右移两位就是00000010,再把00000010转换成十进制就是2。10<<2:左移两位就是00101000,然后101000转换成十进制就是40。

Java 编写一个方法,求一个数的阶乘。 n!=1×2×3×...×n,比如3!=1*...
答:分析 1、确定基本要求,应作为方法的限定条件或特殊情况处理 (1)规定:0!=1 (2)规定:n!中n非负 2、确定逻辑:阶乘是比较适合递归的思路,因为n!=n*(n-1)!,直到求解1!作为结束 代码(因为不太熟悉java,...

怎么样算一个数的二进制?比如说,36的二进制是多少?怎么算的
答:这样你会发现一个规律,十进制转换=当前位的数*10^(位数-1)之和 这样你再去理解二进制,其实二进制就是将10这个量值换成2,去计算得出最终的结果,为什么称为二进制,当然是由于 每个位的数最大只能是1,逢二进一,...

题目是:输入一个整数,输出该数的二进制表示形式的数字串,编写了java...
答:import java.math.BigInteger;public class BigIntegerTest { public static void main(String[] args) { String number="457243952";BigInteger bg = new BigInteger(number,10);System.out.println(bg.toString(2));} } ...

java运算符
答:本来你这个int是啥意思的我给你看下。00000000 00000000 00000000 10100010 二进制全1的情况下一个最大字节是255,在java里面byte取7位用来存储,头一位作符号位。就是说当这8位里面第一位是0的时候表示的是这是个整数,...

使用java程序接收一个小于10的整数n,计算并输出阶乘.
答:System.out.println("请输入整数!");} // 创建对象 Test test = new Test();// 调用递归方法,计算n的阶层 int value = test.f(n);// 输出结果 System.out.println(value);} / 自定义递归方法,返回f(n) *...

java中的int的取值范围如何计算???
答:int的取值范围: (-2147483648 ~ 2147483647)。第一种推算法:将二进制最大的数字(32个1)转换成10进制,即 4294967296;第二种推算法:既然有2的32次方种算法,那么按照10进制最大的数就是2的32次方,即4294967296;...

二进制的计算方式是什么
答:二进制是计算技术中广泛采用的一种数制。二进制数是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。二进制数也是采用位置计数法,其位权是以2为底的幂。例如二进制数110....

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网