提问者:小点点

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


我编写了简单的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-结果。长度();//对于(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星号(*),原因是什么?每次都会更新结果的长度


共3个答案

匿名用户

这是因为您的for循环的限制:

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

以及其中的动作:

result+=0;

增加结果的长度将得到8-result的结果。长度()较小(8-2=6,8-3=5…),因此,循环执行的次数更少。

匿名用户

因为结果是一个字符串。向字符串添加一个int,如下所示

result+=0;

调用与

result+=String.valueOf(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);