二進(jìn)制、八進(jìn)制?、十進(jìn)制、十六進(jìn)制之間轉(zhuǎn)換的原理詳解
本文介紹了進(jìn)制的概念及其在C語(yǔ)言編程中的應(yīng)用,進(jìn)制是進(jìn)位制的簡(jiǎn)稱,描述了數(shù)值在不同進(jìn)制下的表示方法,常見(jiàn)的進(jìn)制包括二進(jìn)制、八進(jìn)制和十六進(jìn)制,二進(jìn)制使用0和1表示,八進(jìn)制使用0-7數(shù)字表示,十六進(jìn)制使用0-9和A-F表示,文章還介紹了如何在不同進(jìn)制之間進(jìn)行轉(zhuǎn)換,如十進(jìn)制轉(zhuǎn)二進(jìn)制、八進(jìn)制及十六進(jìn)制的方法,通過(guò)具體的計(jì)算實(shí)例,讀者可掌握進(jìn)制轉(zhuǎn)換的基本技巧。
C語(yǔ)言編譯過(guò)程
1 gcc 源碼文件.c -o 可執(zhí)行文件.exe -o生產(chǎn)exe helloWorld.c -o hell.exe 1、預(yù)處理 宏定義展開(kāi)、頭文件展開(kāi)、刪除注釋 gcc -E 源碼文件 -o 生成文件.i //gcc -E helloworld.c -o hello.i .i編譯文件 2、編譯 檢查語(yǔ)法,將文件轉(zhuǎn)成匯編文件 gcc -S 預(yù)處理生成的.i文件 -o 生成文件.s //gcc -S hello.i -o hello.s .s匯編文件 3、匯編 將匯編文件轉(zhuǎn)成二進(jìn)制文件 gcc -c hello.s -o hello.o // 4、鏈接 將C語(yǔ)言鏈接庫(kù)鏈接到程序中 gcc hello.o -o hello.exe
進(jìn)制轉(zhuǎn)換
1、進(jìn)制的概念
進(jìn)制也就是進(jìn)位制,是人們規(guī)定的一種進(jìn)位方法。 對(duì)于任何一種進(jìn)制—X進(jìn)制,就表示某一位置上的數(shù)運(yùn)算時(shí)是逢X進(jìn)一位。 十進(jìn)制是逢十進(jìn)一,十六進(jìn)制是逢十六進(jìn)一,二進(jìn)制就是逢二進(jìn)一,以此類推,x進(jìn)制就是逢x進(jìn)位。
1.1 二進(jìn)制
二進(jìn)制是計(jì)算技術(shù)中廣泛采用的一種數(shù)制。二進(jìn)制數(shù)據(jù)是用0和1兩個(gè)數(shù)碼來(lái)表示的數(shù)。它的基數(shù)為2,進(jìn)位規(guī)則是“逢二進(jìn)一”,借位規(guī)則是“借一當(dāng)二”。
1.2 八進(jìn)制
八進(jìn)制,Octal,縮寫(xiě)OCT或O,一種以8為基數(shù)的計(jì)數(shù)法,采用0,1,2,3,4,5,6,7八個(gè)數(shù)字,逢八進(jìn)1。一些編程語(yǔ)言中常常以數(shù)字0開(kāi)始表明該數(shù)字是八進(jìn)制。
1.3 十六進(jìn)制
十六進(jìn)制(英文名稱:Hexadecimal),同我們?nèi)粘I钪械谋硎痉ú灰粯?,它?-9,A-F組成,字母不區(qū)分大小寫(xiě)。與10進(jìn)制的對(duì)應(yīng)關(guān)系是:0-9對(duì)應(yīng)0-9,A-F對(duì)應(yīng)10-15。
進(jìn)制在程序中的表現(xiàn)方式
十進(jìn)制 | 以正常數(shù)字1-9開(kāi)頭,如123 |
---|---|
八進(jìn)制 | 以數(shù)字0開(kāi)頭,如0123 |
十六進(jìn)制 | 以0x開(kāi)頭,如0x123 |
二進(jìn)制 | C語(yǔ)言不能直接書(shū)寫(xiě)二進(jìn)制數(shù) |
二進(jìn)制 | 八進(jìn)制 | 十六進(jìn)制 | 十進(jìn)制 |
---|---|---|---|
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
10 | 2 | 2 | 2 |
11 | 3 | 3 | 3 |
100 | 4 | 4 | 4 |
101 | 5 | 5 | 5 |
110 | 6 | 6 | 6 |
111 | 7 | 7 | 7 |
1000 | 10 | 8 | 8 |
1001 | 11 | 9 | 9 |
1010 | 12 | A | 10 |
1011 | 13 | B | 11 |
1100 | 14 | C | 12 |
1101 | 15 | D | 13 |
1110 | 16 | E | 14 |
1111 | 17 | F | 15 |
10000 | 18 | 10 | 16 |
十進(jìn)制與二進(jìn)制互轉(zhuǎn)
將十進(jìn)制轉(zhuǎn)換成二進(jìn)制(除2反序取余法)
二進(jìn)制轉(zhuǎn)十進(jìn)制(權(quán)值法)
從二進(jìn)制的末尾依次乘以2的n次冪(n是從0 開(kāi)始的)
小提示: 任何數(shù)的0次冪都等于1
? 任何數(shù)的1次冪都等于本身
十進(jìn)制的 123 使用上面的方法(除2 反序取余法)得到的二進(jìn)制為1111011
將1111011 轉(zhuǎn)成10進(jìn)制
1∗20+1∗21+0∗22+1∗23+1∗24+1∗25+1∗26=123
八進(jìn)制與十進(jìn)制互轉(zhuǎn)
將十進(jìn)制轉(zhuǎn)換成八進(jìn)制(除8反序取余法)
八進(jìn)制轉(zhuǎn)十進(jìn)制(權(quán)值法)
從八進(jìn)制的末尾依次乘以8的n次冪(n是從0 開(kāi)始的)
3∗80+7∗81+1∗82=123
十六進(jìn)制與十進(jìn)制互轉(zhuǎn)
將十進(jìn)制轉(zhuǎn)換成十六進(jìn)制(除16反序取余法)
十六進(jìn)制轉(zhuǎn)十進(jìn)制(權(quán)值法)
從十六進(jìn)制的末尾依次乘以16的n次冪(n是從0 開(kāi)始的)
11∗160+7∗161=123
快速轉(zhuǎn)換8421法則
在對(duì)應(yīng)的位置填1
4096 | 2048 | 1024 | 512 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | 二進(jìn)制結(jié)果 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 0 | 1 | 1 | 十進(jìn)制的123 | 1111011 | |||||
1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 164 | 10100100 | ||||
1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 2008 | 11111011000 | |
1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 2024 | 11111101000 |
二進(jìn)制快速轉(zhuǎn)換八進(jìn)制
八進(jìn)制的數(shù)和二進(jìn)制數(shù)可以按位對(duì)應(yīng)(八進(jìn)制一位對(duì)應(yīng)二進(jìn)制三位)。
例:
將二進(jìn)制從末尾3位一隔 十進(jìn)制: 123 二進(jìn)制: 1111011 八進(jìn)制: 011 按照8431 法則 011 = 3 111 按照8431 法則 111 = 7 1 按照8431 法則 011 = 1 轉(zhuǎn)換結(jié)果為173 同理: 八進(jìn)制轉(zhuǎn)換二進(jìn)制時(shí)也是將八進(jìn)制每一位的值轉(zhuǎn)換成3位2進(jìn)制就可以了 173 1-------1 7-------111 3-------011 二進(jìn)制結(jié)果就是: 1111011
二進(jìn)制快速轉(zhuǎn)換十六進(jìn)制
十六進(jìn)制的數(shù)和二進(jìn)制數(shù)可以按位對(duì)應(yīng)(十六進(jìn)制一位對(duì)應(yīng)二進(jìn)制四位)。
例:
將二進(jìn)制從末尾3位一隔 十進(jìn)制: 123 二進(jìn)制: 1111011 十六進(jìn)制: 1011 按照8431 法則 011 = b 0111 按照8431 法則 111 = 7 轉(zhuǎn)換結(jié)果為7b
16進(jìn)制快速轉(zhuǎn)換2進(jìn)制
7B 7----------111 B----------1011 結(jié)果: 1111011
浮點(diǎn)型數(shù)據(jù)轉(zhuǎn)換成2進(jìn)制
十進(jìn)制的小數(shù)轉(zhuǎn)換成二進(jìn)制:小數(shù)部分和2相乘,取整數(shù),不足1取0,每次相乘都是小數(shù)部分,順序看取整后的數(shù)就是轉(zhuǎn)化后的結(jié)果。(小數(shù)位有多少位就乘以多少次) ;從上往下取值;
將小數(shù)部分依次乘以2 如果結(jié)果中整數(shù)部分值為1 取值為1 如果為0 值 為0 小數(shù)位數(shù)有多少位 乘多少次 double a = 123.4567; 0.4567 *2 0.9134 0 *2 1.8268 1 0.8268 *2 1.6536 1 0.6536 *2 1.3072 1 0.4567 = 0111
總結(jié)
到此這篇關(guān)于二進(jìn)制、八進(jìn)制 、十進(jìn)制、十六進(jìn)制之間轉(zhuǎn)換的原理詳解的文章就介紹到這了,更多相關(guān)進(jìn)制轉(zhuǎn)換原理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 科學(xué)知識(shí):二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(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)制)
- python實(shí)現(xiàn)各進(jìn)制轉(zhuǎn)換的總結(jié)大全
- C# 進(jìn)制轉(zhuǎn)換的實(shí)現(xiàn)(二進(jìn)制、十六進(jìn)制、十進(jìn)制互轉(zhuǎn))
- JS中的進(jìn)制轉(zhuǎn)換以及作用
相關(guān)文章
C++語(yǔ)言實(shí)現(xiàn)hash表詳解及實(shí)例代碼
這篇文章主要介紹了C++語(yǔ)言實(shí)現(xiàn)hash表詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-01-01C++?OpenCV實(shí)現(xiàn)白平衡之完美反射算法
完美反射算法是白平衡各種算法中較常見(jiàn)的一種,比灰度世界算法更優(yōu)。本文將利用C++和OpenCV實(shí)現(xiàn)白平衡中的完美反射算法,需要的可以參考一下2022-05-05C語(yǔ)言編程中生成隨機(jī)數(shù)的入門(mén)教程
這篇文章主要介紹了C語(yǔ)言編程中生成隨機(jī)數(shù)的入門(mén)教程,包括利用rand()函數(shù)來(lái)編寫(xiě)隨機(jī)數(shù)生成器的示例,要的朋友可以參考下2015-12-12C語(yǔ)言枚舉(enum)和聯(lián)合(union)實(shí)例分享
在本篇文章里小編給大家整理了關(guān)于C語(yǔ)言枚舉(enum)和聯(lián)合(union)實(shí)例內(nèi)容,需要的朋友們可以學(xué)習(xí)下。2020-03-03C語(yǔ)言圖書(shū)管理系統(tǒng)實(shí)驗(yàn)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言圖書(shū)管理系統(tǒng)實(shí)驗(yàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03C++數(shù)據(jù)結(jié)構(gòu)之文件壓縮(哈夫曼樹(shù))實(shí)例詳解
這篇文章主要介紹了C++數(shù)據(jù)結(jié)構(gòu)之文件壓縮(哈夫曼樹(shù))實(shí)例詳解的相關(guān)資料,利用哈夫曼編碼的方式對(duì)文件進(jìn)行壓縮,并且對(duì)壓縮文件可以解壓,需要的朋友可以參考下2017-07-07