將十進制轉換成二進制的算法以下:
1.給定一個數;
2.根據十進制轉換二進制的思想:把這個數除以2若爲單數則爲1,爲偶數則爲0,直到最後一個數爲1爲止。因此咱們要作的就是用你給定的這個數除以2,若是結果爲奇數則r=1,不然r=0;如此循環下去,直到這個數〉=1。
3.而後把r的值送到一個數組裏面。最後把這個數組裏面的內容從後面打印出來就能夠了。
import java.util.Scanner; public class ZhuanHuan { public static void main(String[] args){ System.out.println("請輸入一個十進制數:"); Scanner reader = new Scanner(System.in); int n=0; int i=0; int r=0; n=reader.nextInt(); int[] a =new int[10]; do{ if(n%2==1){ r=1; } else { r=0; } a[i]=r; n=n/2; i++; } while(n>0); System.out.println("轉化成的二進制是:"); for (int j = i-1; j>=0; j--) { System.out.print(a[j]); } } }
十進制整數轉換爲二進制整數採用"除2取餘,逆序排列"法java
具體作法是:用2整除十進制整數,能夠獲得一個商和餘數,再用2去除商,又會獲得一個商和餘數,如此進行,直到商爲0時爲止,而後把先獲得的餘數做爲二算法
制數的低位有效位,後獲得的餘數做爲二進制數的高位有效位,依次排列起來。數組
對於數值n,二進制最後一位=n%2;計算獲得的結果是最後要輸出的結果,使用遞歸函數,聯繫遞歸的特色:在遞歸語句以前計算n%2,在遞歸調用語句以後函數
輸出結果,這樣先計算的結果反而在最後輸出。spa
import java.util.Scanner; public class ChangeTo2 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("請輸入一個整型的十進制數:"); Scanner reader = new Scanner(System.in); int num = 0; num = reader.nextInt(); System.out.print("轉換後的二進制數爲:"); toBinary(num); } //遞歸函數 static void toBinary( int num){ int r; r = num%2;//最後一位要輸出的,即便參數=1,仍是要計算到這裏結束,只取出餘數就ok了。而後順次返回上一級主調函數,繼續執行剩下的…… //若是商 1 / 2 = 0,計算就能夠終止了,不須要再算 if(num>=2){ //精華,聯繫10進制轉2進制的算法,每次除以2,取出餘數,而後用新的商繼續除以2,取出新餘數……直到商爲0,餘數逆序輸出便可 toBinary(num/2);//把新的商做爲參數遞歸調用 } //在遞歸語句以後輸出,這樣就是倒敘輸出 System.out.print(r); } }