Java从十进制转换为8位二进制

时间:2018-02-23 16:28:42

标签: java

我写了简单的java代码,从十进制转换为8位二进制: 抱歉这个愚蠢的问题

 1       int dec=1;
 2       String result="";
 3       String reverse = "";
 4       while(dec!=0)
 5           {
 6               result+=dec%2;
 7               dec=dec/2;    
 8           }            
 9       //8-Bit Binary 
 10       System.out.println("dec length is :"+result.length());

// int j = 8-result.length(); // for(int i = 0; i

 11        for(int i=0;i<(8-result.length());i++)
 12       {
 13            result+=0;
 14            System.out.println("*");
 15       }
 16       System.out.println("8-Bit before reverse:"+result); 
 17       for(int i = result.length() - 1; i >= 0; i--)
 18        {
 19           reverse = reverse + result.charAt(i);
 20        }
 21       System.out.println("8-bit representation:"+reverse);

结果是: dec长度为:1 * * * * 反向前8位:10000 8位表示:00001

但是当我删除第13行(结果+ = 0;)时,编译器打印7星号(*),原因是什么?结果的长度每次都会更新

4 个答案:

答案 0 :(得分:1)

这是因为你的for循环的混乱:

for(int i=0;i<(8-result.length());i++)

其中的行动:

result+=0;

增加结果长度会使8-result.length()的结果变小(8 - 2 = 6,8 - 3 = 5 ...),因此循环执行次数较少。

答案 1 :(得分:0)

因为 resultString。将int零添加到String,如此

result+=0;

调用与

相同的行为
result+=String.valueOf(0);

答案 2 :(得分:0)

//Decimal to Binary Conversion
            int dec=1;
            String result= "00000000";
            int i=result.length()-1;
            while(dec!=0)
            {
              char a[]=result.toCharArray();
              a[i--]= String.valueOf(dec%2).charAt(0);
              result=new String(a);
              dec=dec/2;  

            }
            System.out.println(result);

答案 3 :(得分:0)

您也可以尝试以下简单代码:

void intToBinary(int a) {
        String temp = Integer.toBinaryString(a);
        while(temp.length() !=8){
            temp = "0"+temp;
        }
        System.out.println(temp);
    }