C 語言進(jìn)制之間的轉(zhuǎn)換
二進(jìn)制、八進(jìn)制和十六進(jìn)制向十進(jìn)制轉(zhuǎn)換都是非常容易的,就是“按權(quán)相加”。
所謂“權(quán)”,也即“位權(quán)”。例如,十進(jìn)制第1位的位權(quán)為100=1,第2位的位權(quán)為101=10,第3位的位權(quán)為102=100;而二進(jìn)制第1位的位權(quán)為20=1,第2位的位權(quán)為21=2,第3位的位權(quán)為22=4。設(shè)數(shù)字所采用的進(jìn)制為N(基數(shù)也是N),那么第 i 位的位權(quán)為 N(i-1)。
不同進(jìn)制轉(zhuǎn)換為十進(jìn)制舉例:
二進(jìn)制:1001 = 1×23 + 0×22+ 0×21 + 1×20 = 8 + 0 + 0 + 1 = 9
二進(jìn)制:101.1001 = 1×22 + 0×21+ 1×20+ 1×2-1+ 0×2-2 + 0×2-3 + 1×2-4= 4 + 0 + 1 + 0.5 + 0 + 0 + 0.0625 = 5.5625
八進(jìn)制:0302 = 3×82 + 0×81+ 2×80 = 192 + 0 + 2 = 194
八進(jìn)制:0302.46 = 3×82 + 0×81 + 2×80 + 4×8-1 + 6×8-2 = 192 + 0 + 2 + 0.5 + 0.09375= 194.59375
十六進(jìn)制:0Xea7 = 14×162 + 10×161 + 7×160= 3751
十進(jìn)制轉(zhuǎn)換為二進(jìn)制——輾除法
上節(jié)的表格中給出了簡單的十進(jìn)制和二進(jìn)制的轉(zhuǎn)換關(guān)系,要想獲得更多的轉(zhuǎn)換關(guān)系,可以使用輾除法。輾除法也就是“除模取余”法。除模取余就是將一個(gè)幾進(jìn)制的數(shù)轉(zhuǎn)化成另一個(gè)進(jìn)制時(shí), 另一個(gè)進(jìn)制的基數(shù)就是模,用將要轉(zhuǎn)化的進(jìn)制數(shù)除以模,取它的余數(shù)。
下圖以十進(jìn)制的“19”轉(zhuǎn)換為二進(jìn)制為例進(jìn)行講解:

如圖所示,以2為除數(shù),一直相除下去,直到商為0,余數(shù)則為求得的二進(jìn)制數(shù)。
注意:余數(shù)要倒序排列,也就是說,最先求得的余數(shù)排在二進(jìn)制的最后面,最后求得的余數(shù)排在二進(jìn)制的最前面。上面的例子中,最后求得的二進(jìn)制數(shù)為 10011。
雖然其他進(jìn)制也可以按照輾除法來轉(zhuǎn)換,但是比較麻煩,下面介紹更簡單的方法。
二進(jìn)制和八進(jìn)制的轉(zhuǎn)換
二進(jìn)制向八進(jìn)制的轉(zhuǎn)換是每三位二進(jìn)制數(shù)轉(zhuǎn)換為一位八進(jìn)制數(shù),運(yùn)算的順序是從低位向高位依次進(jìn)行,高位不足三位用零補(bǔ)充。以二進(jìn)制“1011101”為例,如下圖所示:

轉(zhuǎn)換的結(jié)果為:1011101 = 0135
八進(jìn)制向二進(jìn)制轉(zhuǎn)換的思路是八進(jìn)制的一位轉(zhuǎn)換為二進(jìn)制的三位,運(yùn)算的順序是從低位向高位依次進(jìn)行。同樣以八進(jìn)制“0135”為例,如下圖所示:

轉(zhuǎn)換的結(jié)果為:0135 = 1011101
二進(jìn)制和十六進(jìn)制的轉(zhuǎn)換
二進(jìn)制向十六進(jìn)制轉(zhuǎn)換時(shí),四位轉(zhuǎn)換成十六進(jìn)制的一位,運(yùn)算的順序是從低位向高位依次進(jìn)行,高位不足四位用零補(bǔ)。以“1110011”轉(zhuǎn)換成十六進(jìn)制為例,如下圖所示:

轉(zhuǎn)換的結(jié)果為:1001011101 = 0X25D
十六進(jìn)制向二進(jìn)制轉(zhuǎn)換,就是把十六進(jìn)制的一位轉(zhuǎn)換成二進(jìn)制的四位,注意運(yùn)算的順序是從低位向高位依次進(jìn)行。同樣以十六進(jìn)制“0X25D”為例,如下圖所示:

以上就是對 C語言進(jìn)制直接轉(zhuǎn)化做的一個(gè)資料整理,學(xué)習(xí)進(jìn)制轉(zhuǎn)換的朋友可以參考下
- PHP函數(shù)篇詳解十進(jìn)制、二進(jìn)制、八進(jìn)制和十六進(jìn)制轉(zhuǎn)換函數(shù)說明
- 進(jìn)制轉(zhuǎn)換算法原理(二進(jìn)制 八進(jìn)制 十進(jìn)制 十六進(jìn)制)
- php圖片的二進(jìn)制轉(zhuǎn)換實(shí)現(xiàn)方法
- C++ 十進(jìn)制轉(zhuǎn)換為二進(jìn)制的實(shí)例代碼
- c++實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換成16進(jìn)制示例
- PHP中實(shí)現(xiàn)中文字符進(jìn)制轉(zhuǎn)換原理分析
- 進(jìn)制轉(zhuǎn)換基礎(chǔ)
- Java 進(jìn)制轉(zhuǎn)換的方法
- 位運(yùn)算實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換為二進(jìn)制
- 編寫C語言程序進(jìn)行進(jìn)制轉(zhuǎn)換的問題實(shí)例
相關(guān)文章
C++ 實(shí)現(xiàn)漢諾塔的實(shí)例詳解
這篇文章主要介紹了C++ 實(shí)現(xiàn)漢諾塔的實(shí)例詳解的相關(guān)資料,這里主要說明C++中數(shù)據(jù)結(jié)構(gòu)的遞歸的應(yīng)用,需要的朋友可以參考下2017-08-08
C++編譯錯(cuò)誤variable-sized?object?may?not?be?initiali問題
這篇文章主要介紹了C++編譯錯(cuò)誤variable-sized?object?may?not?be?initiali問題及解決,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
深入分析C語言中結(jié)構(gòu)體指針的定義與引用詳解
本篇文章是對C語言中結(jié)構(gòu)體指針的定義與引用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05

