我写了简单的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星号(*),原因是什么?结果的长度每次都会更新
答案 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)
因为 result
是String
。将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);
}