本篇是用算法自己實現10進制整數轉換成二進制數。注意,這裡是研究的一般的二進制轉換規律,不一定所有系統一定是這樣表示的。 邏輯上,如果將10進制數5用一個字節表示,應該是101,你可以通過000開始不斷加1,得到這個數。但是實際上一般都采用除法計算。 5 / 2 得到商為 2 余數為1 用商2 / 2, 得到商為1 余數為0 用商1 / 2 得到商為0 余數為1 逆序將余數(最後得到的余數放在高位)連在一起就是 101. 這個算法用遞歸可以實現: [cpp] // Convert decimal integer in one byte to binary format string string ByteToBinaryString(char v) { if (v == 1) { return "1"; } if (v % 2 == 0) { return ByteToBinaryString(v / 2) + "0"; } else { return ByteToBinaryString(v / 2) + "1"; } } ByteToBinalyString實現存儲在一個字節中的10進制整數轉換成二進制表達的字符串的功能。 每次調用ByteToBinalyString,都先計算自己除以2的商和余數,用商繼續遞歸調用自己。將余數接在下一個遞歸函數的返回值的後面,這樣就實現了逆序。 出口在商為1的時候,這時候再用1調用自己時,直接返回“1”。 測試了一下,基本上在正數的時候沒問題,如果是0呢,出現了錯誤。因為遞歸變成了無限,沒有出口。所以還要加點代碼,保證直接傳遞0為參數時,程序也能正常工作。 [cpp] // Convert decimal integer in one byte to binary format string string ByteToBinaryString(char v) { if (v == 1) { return "1"; } if (v == 0) { return "0"; } if (v % 2 == 0) { return ByteToBinaryString(v / 2) + "0"; } else { return ByteToBinaryString(v / 2) + "1"; } } 現在考慮char的值小於0的情況。 顯然這個程序還需要修改。