二進制、八進制?、十進制、十六進制之間轉(zhuǎn)換的原理詳解
本文介紹了進制的概念及其在C語言編程中的應用,進制是進位制的簡稱,描述了數(shù)值在不同進制下的表示方法,常見的進制包括二進制、八進制和十六進制,二進制使用0和1表示,八進制使用0-7數(shù)字表示,十六進制使用0-9和A-F表示,文章還介紹了如何在不同進制之間進行轉(zhuǎn)換,如十進制轉(zhuǎn)二進制、八進制及十六進制的方法,通過具體的計算實例,讀者可掌握進制轉(zhuǎn)換的基本技巧。
C語言編譯過程
1 gcc 源碼文件.c -o 可執(zhí)行文件.exe -o生產(chǎn)exe helloWorld.c -o hell.exe 1、預處理 宏定義展開、頭文件展開、刪除注釋 gcc -E 源碼文件 -o 生成文件.i //gcc -E helloworld.c -o hello.i .i編譯文件 2、編譯 檢查語法,將文件轉(zhuǎn)成匯編文件 gcc -S 預處理生成的.i文件 -o 生成文件.s //gcc -S hello.i -o hello.s .s匯編文件 3、匯編 將匯編文件轉(zhuǎn)成二進制文件 gcc -c hello.s -o hello.o // 4、鏈接 將C語言鏈接庫鏈接到程序中 gcc hello.o -o hello.exe
進制轉(zhuǎn)換
1、進制的概念
進制也就是進位制,是人們規(guī)定的一種進位方法。 對于任何一種進制—X進制,就表示某一位置上的數(shù)運算時是逢X進一位。 十進制是逢十進一,十六進制是逢十六進一,二進制就是逢二進一,以此類推,x進制就是逢x進位。
1.1 二進制
二進制是計算技術中廣泛采用的一種數(shù)制。二進制數(shù)據(jù)是用0和1兩個數(shù)碼來表示的數(shù)。它的基數(shù)為2,進位規(guī)則是“逢二進一”,借位規(guī)則是“借一當二”。
1.2 八進制
八進制,Octal,縮寫OCT或O,一種以8為基數(shù)的計數(shù)法,采用0,1,2,3,4,5,6,7八個數(shù)字,逢八進1。一些編程語言中常常以數(shù)字0開始表明該數(shù)字是八進制。
1.3 十六進制
十六進制(英文名稱:Hexadecimal),同我們?nèi)粘I钪械谋硎痉ú灰粯樱?-9,A-F組成,字母不區(qū)分大小寫。與10進制的對應關系是:0-9對應0-9,A-F對應10-15。
進制在程序中的表現(xiàn)方式
十進制 | 以正常數(shù)字1-9開頭,如123 |
---|---|
八進制 | 以數(shù)字0開頭,如0123 |
十六進制 | 以0x開頭,如0x123 |
二進制 | C語言不能直接書寫二進制數(shù) |
二進制 | 八進制 | 十六進制 | 十進制 |
---|---|---|---|
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 |
十進制與二進制互轉(zhuǎn)
將十進制轉(zhuǎn)換成二進制(除2反序取余法)
二進制轉(zhuǎn)十進制(權值法)
從二進制的末尾依次乘以2的n次冪(n是從0 開始的)
小提示: 任何數(shù)的0次冪都等于1
? 任何數(shù)的1次冪都等于本身
十進制的 123 使用上面的方法(除2 反序取余法)得到的二進制為1111011
將1111011 轉(zhuǎn)成10進制
1∗20+1∗21+0∗22+1∗23+1∗24+1∗25+1∗26=123
八進制與十進制互轉(zhuǎn)
將十進制轉(zhuǎn)換成八進制(除8反序取余法)
八進制轉(zhuǎn)十進制(權值法)
從八進制的末尾依次乘以8的n次冪(n是從0 開始的)
3∗80+7∗81+1∗82=123
十六進制與十進制互轉(zhuǎn)
將十進制轉(zhuǎn)換成十六進制(除16反序取余法)
十六進制轉(zhuǎn)十進制(權值法)
從十六進制的末尾依次乘以16的n次冪(n是從0 開始的)
11∗160+7∗161=123
快速轉(zhuǎn)換8421法則
在對應的位置填1
4096 | 2048 | 1024 | 512 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | 二進制結(jié)果 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 0 | 1 | 1 | 十進制的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 |
二進制快速轉(zhuǎn)換八進制
八進制的數(shù)和二進制數(shù)可以按位對應(八進制一位對應二進制三位)。
例:
將二進制從末尾3位一隔 十進制: 123 二進制: 1111011 八進制: 011 按照8431 法則 011 = 3 111 按照8431 法則 111 = 7 1 按照8431 法則 011 = 1 轉(zhuǎn)換結(jié)果為173 同理: 八進制轉(zhuǎn)換二進制時也是將八進制每一位的值轉(zhuǎn)換成3位2進制就可以了 173 1-------1 7-------111 3-------011 二進制結(jié)果就是: 1111011
二進制快速轉(zhuǎn)換十六進制
十六進制的數(shù)和二進制數(shù)可以按位對應(十六進制一位對應二進制四位)。
例:
將二進制從末尾3位一隔 十進制: 123 二進制: 1111011 十六進制: 1011 按照8431 法則 011 = b 0111 按照8431 法則 111 = 7 轉(zhuǎn)換結(jié)果為7b
16進制快速轉(zhuǎn)換2進制
7B 7----------111 B----------1011 結(jié)果: 1111011
浮點型數(shù)據(jù)轉(zhuǎn)換成2進制
十進制的小數(shù)轉(zhuǎ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é)
到此這篇關于二進制、八進制 、十進制、十六進制之間轉(zhuǎn)換的原理詳解的文章就介紹到這了,更多相關進制轉(zhuǎn)換原理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C語言枚舉(enum)和聯(lián)合(union)實例分享
在本篇文章里小編給大家整理了關于C語言枚舉(enum)和聯(lián)合(union)實例內(nèi)容,需要的朋友們可以學習下。2020-03-03C++數(shù)據(jù)結(jié)構之文件壓縮(哈夫曼樹)實例詳解
這篇文章主要介紹了C++數(shù)據(jù)結(jié)構之文件壓縮(哈夫曼樹)實例詳解的相關資料,利用哈夫曼編碼的方式對文件進行壓縮,并且對壓縮文件可以解壓,需要的朋友可以參考下2017-07-07