將十進制轉換成二進制的算法如下:
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取余,逆序排列"法
具體做法是:用2整除十進制整數,可以得到一個商和余數,再用2去除商,又會得到一個商和余數,如此進行,直到商為0時為止,然后把先得到的余數作為二
制數的低位有效位,后得到的余數作為二進制數的高位有效位,依次排列起來。
對於數值n,二進制最后一位=n%2;計算得到的結果是最后要輸出的結果,使用遞歸函數,聯系遞歸的特點:在遞歸語句之前計算n%2,在遞歸調用語句之后
輸出結果,這樣先計算的結果反而在最后輸出。
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); } }