1. 程式人生 > >Java中輸入一個十進位制數,如何轉換為二進位制數

Java中輸入一個十進位制數,如何轉換為二進位制數

方法一:利用Java API直接轉換

十進位制數如何轉換為二進位制數,這在Java API 中有一個方法,Integer.toBinaryString( ) 括號裡面寫上你要轉換的十進位制數,這樣可以直接轉換。例如:

public static void main(String[] args) {

        十進位制轉換為二進位制
        System.out.println(Integer.toBinaryString(10));

    }

方法二:通過求餘,求商,並計算值(例如:把二進位制的1010 直接輸成十進位制的1010)實現.

public static void
main(String[] args) { // TODO Auto-generated method stub int a = 123;//定義一個變數並賦給他一個十進位制的值 int remainder;//定義一個變數用於儲存餘數 int sum = 0;//定義一個變數用於存放和 int k = 1;//定義一個變數控制位數 while(a != 0){ remainder = a % 2;//對目標數字求餘 a /= 2;//對目標數字求商 sum
= sum + remainder * k;//求和 k *= 10;//改變位數 } System.out.println("10進位制的123轉換為2進位制結果為:" + sum ); }

但是這種方法存在一個問題:因為int型別是有取值範圍的,如果轉換的二進位制數字超出了範圍(例如:10011100110110)這個數字明顯超出了int的取值範圍,這樣我們用int型別的sum進行儲存的時候他就會自動轉換為一個其他的數字。並且這個方法沒有辦法求負數的二進位制數。

方法三:在方法二的基礎上使用字串對結果集進行儲存

public static void
main(String[] args) { int n = -10; String result = ""; boolean minus = false; //如果該數字為負數,那麼進行該負數+1之後的絕對值的二進位制碼的對應位取反,然後將它儲存在result結果中 if(n < 0){ minus = true; n = Math.abs(n + 1); } while(true){ int remainder = (!minus && n % 2 == 0) || (minus && n % 2 == 1) ? 0 : 1; //將餘數儲存在結果中 result = remainder + result; n /= 2; if(n == 0){ break; } } //判斷是否為負數,如果是負數,那麼前面所有位補1 if(minus){ n = result.length(); for(int i = 1; i <= 32 - n; i++){ result = 1 + result; } } System.out.println(result); }

用這種方法就能很好解決int型別的越界問題,能解決所有的十進位制轉換二進位制的問題。