2017-04-06 83 views
0

我想將基數10中的數字轉換爲基數2中的數字,但是我遇到了問題。當我運行代碼時,我得到了錯誤順序的基數2。例如,我輸入54並獲得110110而不是011011,這是正確的值。從基數10轉換爲基數2

+0

您可以隨時恢復你所得到的基體10號。 –

+0

你可以把餘數值放到一個堆棧中,並在迭代完成後或者在一個數組中將其打印出來並且顛倒順序 –

+0

你沒有基數10.'nextInt()'傳遞一個二進制整數,基數爲2 。你實際做的是將二進制轉換爲可打印的ASCII。 – EJP

回答

1

Java有一個內置的方法來做到這一點:

Integer.toString(int i, int radix); 

其中

  • i是你的基地至十號,並
  • radix是你想要它,你的情況的基礎上,2

它將以二進制返回一個字符串。

1

基地10到基地2應反向輸出,我認爲你可以使用array,然後反向輸出array

public static void main(String arg[]){ 
     int quotient; 
     int remainder; 
     List<Integer> arrayList=new ArrayList<Integer>(); 
     Scanner keyboard = new Scanner(System.in); 
     System.out.println("Please enter a decimal number:"); 
     quotient = keyboard.nextInt(); 

     do { 
      remainder = quotient % 2; 
      quotient = quotient/2; 

      // String x = String.valueOf(remainder); 
      // System.out.print(x); 
      // System.out.print (remainder); 
      arrayList.add(remainder); 

     } while (quotient != 0); 
     ListIterator<Integer> li; 
     for (li = arrayList.listIterator(); li.hasNext();) {// 將遊標定位到列表結尾 
      li.next(); 
     } 
     for (; li.hasPrevious();) {// 逆序輸出列表中的元素 
      System.out.print(li.previous() + " "); 
     } 
    } 
-1

我能解決您的代碼

public class CustomDecimalToBinary { 
    public static void Dec2Bin() { 
     int quotient; 
     int remainder; 

     Scanner keyboard = new Scanner (System.in); 
     System.out.println("Please enter a decimal number:"); 
     quotient = keyboard.nextInt(); 

     do { 
      remainder = quotient % 2; 

      // String x = String.valueOf(remainder); 
      // System.out.print(x); 
      System.out.print (remainder); 

     } while ((quotient /= 2) != 0); 
    } 
} 

輸出示例:

Please enter a decimal number: 
54 
011011 

編輯:看來我解決了獲得所需輸出的問題,但你的代碼產生正確的輸出.. 。

+1

54的二進制表示不是011011.這是27的二進制表示形式。54的二進制表示形式是110110.您只是重現了OP的問題。 – EJP

0

嘗試此解決方案,其簡單:

int quotient; 
     int remainder; 

     Scanner keyboard = new Scanner (System.in); 
     System.out.println("Please enter a decimal number:"); 
     quotient = keyboard.nextInt(); 
     Stack<Integer> s=new Stack<Integer>(); 
     do { 
     remainder = quotient % 2; 
     quotient = quotient/2; 
     s.add(remainder); 
     // String x = String.valueOf(remainder); 
     // System.out.print(x); 
     //System.out.print (remainder); 
     } while (quotient != 0); 
     while(!s.isEmpty()){ 
      System.out.print(s.pop()); 

     } 
0

這裏的另一個內置Java函數是

Integer.toBinaryString(int num) 

其中num是要轉換