C 語(yǔ)言進(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é)的表格中給出了簡(jiǎn)單的十進(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ù)要倒序排列,也就是說(shuō),最先求得的余數(shù)排在二進(jìn)制的最后面,最后求得的余數(shù)排在二進(jìn)制的最前面。上面的例子中,最后求得的二進(jìn)制數(shù)為 10011。
雖然其他進(jìn)制也可以按照輾除法來(lái)轉(zhuǎn)換,但是比較麻煩,下面介紹更簡(jiǎ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”為例,如下圖所示:
以上就是對(duì) C語(yǔ)言進(jìn)制直接轉(zhuǎn)化做的一個(gè)資料整理,學(xué)習(xí)進(jìn)制轉(zhuǎn)換的朋友可以參考下
- PHP函數(shù)篇詳解十進(jìn)制、二進(jìn)制、八進(jìn)制和十六進(jìn)制轉(zhuǎn)換函數(shù)說(shuō)明
- 進(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語(yǔ)言程序進(jìn)行進(jìn)制轉(zhuǎn)換的問(wèn)題實(shí)例
相關(guān)文章
C語(yǔ)言編程C++柔性數(shù)組結(jié)構(gòu)示例講解
這篇文章主要介紹了C語(yǔ)言編程系列中的柔性數(shù)組,文中含有詳細(xì)的示例代碼講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09詳解C++的反調(diào)試技術(shù)與繞過(guò)手法
反調(diào)試技術(shù),惡意代碼會(huì)用它識(shí)別自身是否被調(diào)試,或者讓調(diào)試器失效,給反病毒工程師們制造麻煩,拉長(zhǎng)提取特征碼的時(shí)間線,本章將具體總結(jié)常見(jiàn)的反調(diào)試基礎(chǔ)的實(shí)現(xiàn)原理以及如何過(guò)掉這些反調(diào)試手段,從而讓我們能夠繼續(xù)分析惡意代碼2021-06-06C++實(shí)現(xiàn)LeetCode(123.買股票的最佳時(shí)間之三)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(123.買股票的最佳時(shí)間之三),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C語(yǔ)言指針學(xué)習(xí)經(jīng)驗(yàn)總結(jié)淺談
指針是C語(yǔ)言的難點(diǎn)和重點(diǎn),但指針也是C語(yǔ)言的靈魂 。2013-03-03C++基于Directx MMX實(shí)現(xiàn)的圖像灰度轉(zhuǎn)換代碼
這篇文章主要介紹了C++基于Directx MMX實(shí)現(xiàn)的圖像灰度轉(zhuǎn)換代碼,需要的朋友可以參考下2014-08-08VC程序設(shè)計(jì)中CreateProcess用法注意事項(xiàng)
這篇文章主要介紹了VC程序設(shè)計(jì)中CreateProcess用法注意事項(xiàng),需要的朋友可以參考下2014-07-07C++?OpenCV實(shí)現(xiàn)二維碼檢測(cè)功能
這篇文章主要介紹了如何利用C++?OpenCV實(shí)現(xiàn)二維碼檢測(cè)功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-01-01