在實際開發中,我們可以用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,每次除了...