2016-07-27 66 views
-4

我試圖將十進制轉換爲二進制,但一些如何當我轉換128二進制輸出給我11111110,我試圖修復計算,但仍然以相同的輸出結束。將十進制轉換爲二進制(Java)

import java.lang.*; 

public class HA7BinaryErr { 
    public static void main(String[] argv) { 
     Scanner input = new Scanner(System.in); 
     int number = 0; 
     int factorOfTwo = 0; 
     // get number to convert from user 
     do { 
      System.out.println("Enter the number to convert (0-255): "); 
      number = input.nextInt(); 

     } while (number < 0 || number > 255); 
     System.out.println("The number " + number + " converted to binary is : "); 
     // convert to binary by successively dividing by larger factors of 2 
     for (factorOfTwo = 1; factorOfTwo <= 128; factorOfTwo *= 2) { 
      if (number/factorOfTwo >= 1) { 
       System.out.print("1"); 
       number -= factorOfTwo; 
      } else 
       System.out.print("0"); 
     } 

    } // end of main 
}// end of class 
+0

什麼的'factorOfTwo'它出了問題的第一個值? –

+0

如果您要求人們嘗試閱讀,請始終縮進您的代碼。 – khelwood

+1

[將小數轉換爲二進制Java]可能的重複(http://stackoverflow.com/questions/14784630/converting-decimal-to-binary-java) – UserF40

回答

2

您有問題,您正在向後寫入數字。您需要先從最高位開始

for (int powerOfTwo = 128; powerOfTwo > 0; powerOfTwo /= 2) { 

當您使用十進制編碼時,以最高功率開始,例如, 1234是1 * 1000 + 2 * 100 + 3 * 10 + 4 * 1

0

您可以採取簡單的方法和使用: Integer.toBinaryString(int i)然後將字符串打印到控制檯。 檢查出來here.

-1
public class DCTB { 


    public void convertor(int n) 
    { 
     for(int i=0;i<10;i++) 
     { 
     int arr=(int) (n%2); 
     n=n/2; 
     System.out.println(Integer.toString(arr)); 
     } 
    } 

    public static void main(String args[]) 
    { 
    DCTB obj=new DCTB(); 
    obj.convertor(10); 
     } 

}