C語言實現大數轉二進位制

2021-09-30 20:43:32 字數 1634 閱讀 8321

基本思想是列豎式,每輪求出商和餘數。

例如:大數字串是「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...