C語言二進位制與十進位制互相轉換的方法和示例

2021-10-05 05:34:10 字數 1381 閱讀 4832

在實際開發中,我們可以用0和1的字串來表達資訊,例如某裝置有八個感測器,每個感測器的狀態用1表示正常,用0表示故障,用乙個二進位制的字串表示它們如01111011,用乙個字元或整數表示它就是123。

1)把十進數除以2,記下餘數(餘數儲存在字串中),現用商除以2,再記下餘數,如此迴圈,直到商為0。

2)把儲存餘數的字串反過來,就是結果。

例如123轉化成二進位制:

123/2=61餘1

61/2=30餘1

30/2=15餘0

15/2=7餘1

7/2=3餘1

3/2=1餘1

1/1=0餘1

結果是1101111,反過來就是1111011。

把二進位制字串從最高位(左邊第一位)開始用商乘以2再加餘數(該位的數字),如此迴圈,左邊第一位的商肯定是0。

例如1111011轉化成十進位制:

0*2+1=1

1*2+1=3

3*2+1=7

7*2+1=15

15*2+0=30

30*2+1=61

61*2+1=123

結果是123。

/*

* 程式名:book.c,此程式演示十進位制和二進位制的互相轉換。

*/#include

"stdio.h"

#include

// 把十進位制整數轉換為二進位制的字串。

// dec:待轉換的十進位制整數。

// pbin:用於存放轉換後的字串的位址,注意,您必須保證pbin足以存放轉換後的結果,否則可能會產生記憶體溢位。在64位作業系統中,long的最大取值為2的64次方,所以,pbin最大不必超過65。

void

dectobin

(const

long dec,

char

*pbin)

// 再把result字串反過來,存放在pbin中。

int jj=0;

for(

;ii>

0;ii--

) pbin[jj]=0

;// 出於安全的考慮,加上0表示字串結束。

}// 把二進位制字串轉換為十進位制。

// pbin:待轉換的二進位制字串。

// 返回值:二進位制字串轉換為十進位制整數的結果。

long

bintodec

(const

char

*pbin)

return result;

}int

main()

執行測試:

c語言 十進位制轉二進位制

在一些高階語言中都有現成的將各種進製之間的轉換函式,c語言中沒有這種函式,自己寫也很方便。這是我在一本書上看到的一道題。題目描述 輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。輸入 輸入可能包含多個測試樣例。對於每個輸入檔案,第一行輸入乙個整數t,代表測試樣例的數量。對於每個測試...

十進位制轉二進位制(C

十進位制轉換二進位制其實不是個複雜的問題,我們首先搞清楚原理 整數部分 如果不是0,不斷除2,直到除到1為止,得到的餘數最後逆向排列輸出 如果是0,直接輸出 小數部分 小數部分m非0,則不斷乘2,如果2 m超過1,則輸出1,m 2 m 1 如果2 m不超過1,m 2 m 由於很多小數是無法完全轉換為...

十進位制轉二進位制(C )

相信大家應該都知道,十進位制轉k進製的方法常用的就是除k取餘的方法,這裡針對這個方法,給出了c 的 需要注意的是,除二取餘的方法,對於餘數的選取是從後往前取的,所以在 中,也要解決這個問題才行。模仿不停地除2的過程,每次除2之後用 取餘數i 用 作為下一次除2的被除數temp j初始化為1,每次除了...