一、完整代碼
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 開始。
- 數組反向輸出?:在取任意進制時,算法是先除得取。最后從最下層至上一層。一層一層獲取余數。並作為高位至代位擺放
