將十進制轉換成二進制的算法如下:
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);
}
}
