基本思想是列豎式,每輪求出商和餘數。
例如:大數字串是「1234」
第一次 「1234」 / 2 = 0617 … 0
在本文例子中,首先將大數最高位字元 '1' 轉換成整數轉換成整數 1
然後計算 1 / 2 = 0, 再把 0 轉換成字元 '0' 放到快取區中,這是得到商
的最高位。計算次高位 '2' 時,由於前一位 1 % 2 = 1,此時會有借位
發生,也就是 (1*10 + 2) / 2 = 6,作為商的次高位,剩下位的計算和前面的
一樣。
第二次 「0617」 / 2 = 0308 … 1
第三次 「0308」 / 2 = 0154 … 0
第三次 「0154」 / 2 = 0077 … 0
第四次 「0077」 / 2 = 0038 … 1
第五次 「0038」 / 2 = 0019 … 0
第六次 「0019」 / 2 = 0009 … 1
第七次 「0009」 / 2 = 0004 … 1
第八次 「0004」 / 2 = 0002 … 0
第九次 「0002」 / 2 = 0001 … 0
第十次 「0001」 / 2 = 0000 … 1
到最後商為0是結束,餘數倒過來輸出即可得到對應的二進位制數"10011010010",
在具體實現的時候值得關注的問題是借位,判斷結束的條件。
#include
#include
#include
#include
#define bignumlen 1024
// reverse a string
void
reverse
(char
*num)
}/**
* judge all characters of a string wether are all '0'.
* num: a string consit of number characters.
* return: true in 0
* false in 1
**/int
isstr0
(char
*num)
return0;
}void
bignumtobin()
k =0;
doif
(big_num[i]
=='1'
&& i !=
strlen
(big_num)-1
&& n !=10)
else
} quotient[j]
='\0'
; result[k]
=(temp &1)
+'0'
; k ++;}
while
(isstr0
(quotient));
result[k]
='\0'
;reverse
(result)
;printf
("binary: %s\n"
, result);}
intmain()
C語言實現二進位制檔案讀寫
然後,就在網上搜尋了一下,發現通過c語言實現二進位制檔案讀寫的資料居然出奇的少,這讓我很憤怒,因為雖然這東西很簡單,但是對於初學者,往往會需要花很長的時間去弄,一旦明白,又發現花的時間很不值得,罷了,這裡通過乙個檔案拷貝的例子來講講二進位制檔案的讀寫吧。先介紹函式,我們一共要用到三個函式,fopen...
C語言實現二進位制檔案讀寫
c 語言實現二進位制檔案讀寫 我一直覺得二進位制檔案讀寫是個很容易的事,所以一直沒在意,最近在寫乙個 然後,就在網上搜尋了一下,發現通過 c語言實現二進位制檔案讀寫的資料居然出奇的少,這讓我很憤怒,因為雖然這東西很簡單,但是對於初學者,往往會需要花很長的時間去弄,一旦明白,又發現花的時間很不值得,罷...
C語言實現二進位制檔案讀寫
然後,就在網上搜尋了一下,發現通過c語言實現二進位制檔案讀寫的資料居然出奇的少,這讓我很憤怒,因為雖然這東西很簡單,但是對於初學者,往往會需要花很長的時間去弄,一旦明白,又發現花的時間很不值得,罷了,這裡通過乙個檔案拷貝的例子來講講二進位制檔案的讀寫吧。先介紹函式,我們一共要用到三個函式,fopen...