一、完整代碼
public class BigInteger {
int sing;
byte[] val;
public BigInteger(int val){
// 將傳遞的初始值,按位取值,存入字節數組中
int val2 = val;
int i=0;
while(val/2!=0){
val = val/2;
i++;
}
i++;
this.val = new byte[i];
int j=0;
while(val2/2!=0){
this.val[j++] = (byte) (val2%2);
val2 = val2/2;
}
this.val[j]=(byte) (val2%2);
}
public static void main(String[] args) {
System.out.print("請輸入要轉換為二進制的數:");
BigInteger bigInteger = new BigInteger(new Scanner(System.in).nextInt());
for(int i=bigInteger.val.length-1;i>=0;i--){
System.out.print(bigInteger.val[i]);
}
}
}
二、核心思想
- 以 byte[] 存取二進制
- 通過 wile() 對該數不斷除2,得到數組應設大小。
- 再次通過 while() 對該數的副本不斷除2,取余。放入 byte[] 數組
- 最后輸出
三、注意事項
- 計算數組應設長度時在最后加1:因為數組長度是從1開始,但代碼中 i 是從 0 開始。
- 數組反向輸出?:在取任意進制時,算法是先除得取。最后從最下層至上一層。一層一層獲取余數。並作為高位至代位擺放