C 語言進位之間的轉換_C 語言

來源:互聯網
上載者:User

二進位、八進位和十六進位向十進位轉換都是非常容易的,就是“按權相加”。

所謂“權”,也即“位權”。例如,十進位第1位的位權為100=1,第2位的位權為101=10,第3位的位權為102=100;而二進位第1位的位權為20=1,第2位的位權為21=2,第3位的位權為22=4。設數字所採用的進位為N(基數也是N),那麼第 i 位的位權為 N(i-1)

不同進位轉換為十進位舉例:

二進位:1001 = 1×23 + 0×22+ 0×21 + 1×20 = 8 + 0 + 0 + 1 = 9

二進位: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

八進位:0302 = 3×82 + 0×81+ 2×80 = 192 + 0 + 2 = 194

八進位:0302.46 = 3×82 + 0×81 + 2×80 + 4×8-1 + 6×8-2 = 192 + 0 + 2 + 0.5 + 0.09375= 194.59375

十六進位:0Xea7 = 14×162 + 10×161 + 7×160= 3751

十進位轉換為二進位——輾除法

上節的表格中給出了簡單的十進位和二進位的轉換關係,要想獲得更多的轉換關係,可以使用輾除法。輾除法也就是“除模取餘”法。除模取餘就是將一個幾進位的數轉化成另一個進位時, 另一個進位的基數就是模,用將要轉化的進位數除以模,取它的餘數。

下圖以十進位的“19”轉換為二進位為例進行講解:

如圖所示,以2為除數,一直相除下去,直到商為0,餘數則為求得的位元。

注意:餘數要倒序排列,也就是說,最先求得的餘數排在二進位的最後面,最後求得的餘數排在二進位的最前面。上面的例子中,最後求得的位元為 10011。

雖然其他進位也可以按照輾除法來轉換,但是比較麻煩,下面介紹更簡單的方法。

二進位和八進位的轉換

二進位向八進位的轉換是每三位位元轉換為一位八位元,運算的順序是從低位向高位依次進行,高位不足三位用零補充。以二進位“1011101”為例,如下圖所示:

轉換的結果為:1011101 = 0135

八進位向二進位轉換的思路是八進位的一位轉換為二進位的三位,運算的順序是從低位向高位依次進行。同樣以八進位“0135”為例,如下圖所示:

轉換的結果為:0135 = 1011101

二進位和十六進位的轉換

二進位向十六進位轉換時,四位轉換成十六進位的一位,運算的順序是從低位向高位依次進行,高位不足四位用零補。以“1110011”轉換成十六進位為例,如下圖所示:

轉換的結果為:1001011101 = 0X25D

十六進位向二進位轉換,就是把十六進位的一位轉換成二進位的四位,注意運算的順序是從低位向高位依次進行。同樣以十六進位“0X25D”為例,如下圖所示:

 以上就是對 C語言進位直接轉化做的一個資料整理,學習進位轉換的朋友可以參考下

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.