簡體   English   中英

Java從十進制轉換為8位二進制

[英]Java convert from decimal to 8-bit binary

我寫了簡單的 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 行(result+=0;)時,編譯器會打印 7 個星號(*),這是什么原因? 結果的長度每次都會更新

這是因為您的for循環沒用:

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

以及其中的動作:

result+=0;

增加結果的長度會使8-result.length()的結果較小(8-2 = 6,8-3 = 5 ...),因此循環執行的次數更少。

因為 resultString String添加一個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);

您也可以嘗試以下簡單代碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM