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