方法一:利用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類型的越界問題,能解決所有的十進制轉換二進制的問題。