⑴ C語言中的二進制、十進制、十六進制各是什麼意思
計算機中常用的數的進制主要有:二進制、八進制、十六進制,學習計算機要對其有所了解。 x0dx0a2進制,用兩個阿拉伯數字:0、1; x0dx0a8進制,用八個阿拉伯數字:0、1、2、3、4、5、6、7; x0dx0a10進制,用十個阿拉伯數字:0到9; x0dx0a16進制就是逢16進1,但我們只有0~9這十個數字,所以我們用A,B,C,D,E,F這五個字母來分別表示10,11,12,13,14,15。字母不區分大小寫。 x0dx0ax0dx0a以下簡介各種進制之間的轉換方法: x0dx0a一、二進制轉換十進制 x0dx0a例:二進制 「1101100」 x0dx0a1101100 ←二進制數 x0dx0a6543210 ←排位方法 x0dx0ax0dx0a例如二進制換算十進制的演算法: x0dx0a1*26 + 1*25 + 0*24 + 1*23 + 1* 22 + 0*21 + 0*20 x0dx0a↑ ↑ x0dx0a說明:2代表進制,後面的數是次方(從右往左數,以0開始) x0dx0a=64+32+0+8+4+0+0 x0dx0a=108 x0dx0ax0dx0a二、二進制換算八進制 x0dx0a例:二進制的「10110111011」 x0dx0a換八進制時,從右到左,三位一組,不夠補0,即成了: x0dx0a010 110 111 011 x0dx0a然後每組中的3個數分別對應4、2、1的狀態,然後將為狀態為1的相加,如: x0dx0a010 = 2 x0dx0a110 = 4+2 = 6 x0dx0a111 = 4+2+1 = 7 x0dx0a011 = 2+1 = 3 x0dx0a結果為:2673 x0dx0ax0dx0a三、二進制轉換十六進制 x0dx0a十六進制換二進制的方法也類似,只要每組4位,分別對應8、4、2、1就行了,如分解為: x0dx0a0101 1011 1011 x0dx0a運算為: x0dx0a0101 = 4+1 = 5 x0dx0a1011 = 8+2+1 = 11(由於10為A,所以11即B) x0dx0a1011 = 8+2+1 = 11(由於10為A,所以11即B) x0dx0a結果為:5BB x0dx0ax0dx0a四、二進制數轉換為十進制數 x0dx0a二進制數第0位的權值是2的0次方,第1位的權值是2的1次方?? x0dx0a所以,設有一個二進制數:0110 0100,轉換為10進制為: x0dx0a計算: 0 * 20 + 0 * 21 + 1 * 22 + 0 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100 x0dx0ax0dx0a五、八進制數轉換為十進制數 x0dx0a八進制就是逢8進1。 x0dx0a八進制數採用 0~7這八數來表達一個數。 x0dx0a八進制數第0位的權值為8的0次方,第1位權值為8的1次方,第2位權值為8的2次方?? x0dx0a所以,設有一個八進制數:1507,轉換為十進制為: x0dx0a計算: 7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839 x0dx0a結果是,八進制數 1507 轉換成十進制數為 839 x0dx0ax0dx0a六、十六進制轉換十進制 x0dx0a例:2AF5換算成10進制 x0dx0a直接計算就是: 5 * 160 + F * 161 + A * 162 + 2 * 163 = 10997 x0dx0a(別忘了,在上面的計算中,A表示10,而F表示15)、 x0dx0ax0dx0a現在可以看出,所有進制換算成10進制,關鍵在於各自的權值不同。 x0dx0a假設有人問你,十進數 1234 為什麼是 一千二百三十四?你盡可以給他這么一個算式: 1234 = 1 * 103 + 2 * 102 + 3 * 101 + 4 * 100 x0dx0ax0dx0a十進制與二進制轉換之相互演算法 x0dx0a十進制轉二進制: x0dx0ax0dx0a用2輾轉相除至結果為1 x0dx0ax0dx0a將余數和最後的1從下向上倒序寫 就是結果 x0dx0ax0dx0a例如302 x0dx0ax0dx0a302/2 = 151 餘0 x0dx0ax0dx0a151/2 = 75 餘1 x0dx0ax0dx0a75/2 = 37 餘1 x0dx0ax0dx0a37/2 = 18 餘1 x0dx0ax0dx0a18/2 = 9 餘0 x0dx0ax0dx0a9/2 = 4 餘1 x0dx0ax0dx0a4/2 = 2 餘0 x0dx0ax0dx0a2/2 = 1 餘0 x0dx0ax0dx0a故二進制為100101110 x0dx0ax0dx0a二進制轉十進制 x0dx0ax0dx0a從最後一位開始算,依次列為第0、1、2...位 x0dx0ax0dx0a第n位的數(0或1)乘以2的n次方 x0dx0ax0dx0a得到的結果相加就是答案 x0dx0ax0dx0a例如:01101011.轉十進制: x0dx0ax0dx0a第0位:1乘2的0次方=1 x0dx0ax0dx0a1乘2的1次方=2 x0dx0ax0dx0a0乘2的2次方=0 x0dx0ax0dx0a1乘2的3次方=8 x0dx0ax0dx0a0乘2的4次方=0 x0dx0ax0dx0a1乘2的5次方=32 x0dx0ax0dx0a1乘2的6次方=64 x0dx0ax0dx0a0乘2的7次方=0 x0dx0ax0dx0a然後:1+2+0 x0dx0ax0dx0a+8+0+32+64+0=107. x0dx0ax0dx0a二進制01101011=十進制107. x0dx0ax0dx0a一、二進制數轉換成十進制數 x0dx0ax0dx0a由二進制數轉換成十進制數的基本做法是,把二進制數首先寫成加權系數展開式,然後按十進制加法規則求和。這種做法稱為"按權相加"法。 x0dx0ax0dx0a二、十進制數轉換為二進制數 x0dx0ax0dx0a十進制數轉換為二進制數時,由於整數和小數的轉換方法不同,所以先將十進制數的整數部分和小數部分分別轉換後,再加以合並。 x0dx0ax0dx0a1. 十進制整數轉換為二進制整數 x0dx0ax0dx0a十進制整數轉換為二進制整數採用"除2取余,逆序排列"法。具體做法是:用2去除十進制整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余數,如此進行,直到商為零時為止,然後把先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列起來。 x0dx0ax0dx0a2.十進制小數轉換為二進制小數 x0dx0ax0dx0a十進制小數轉換成二進制小數採用"乘2取整,順序排列"法。具體做法是:用2乘十進制小數,可以得到積,將積的整數部分取出,再用2乘餘下的小數部分,又得到一個積,再將積的整數部分取出,如此進行,直到積中的小數部分為零,或者達到所要求的精度為止。 x0dx0ax0dx0a然後把取出的整數部分按順序排列起來,先取的整數作為二進制小數的高位有效位,後取的整數作為低位有效位。 x0dx0ax0dx0a1.二進制與十進制的轉換 x0dx0ax0dx0a(1)二進制轉十進制
方法:"按權展開求和" x0dx0ax0dx0a例: x0dx0ax0dx0a(1011.01)2 =(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10 x0dx0ax0dx0a=(8+0+2+1+0+0.25)10 x0dx0ax0dx0a=(11.25)10 x0dx0ax0dx0a(2)十進制轉二進制 x0dx0ax0dx0a· 十進制整數轉二進制數:"除以2取余,逆序輸出" x0dx0ax0dx0a例: (89)10=(1011001)2 x0dx0ax0dx0a2 89 x0dx0ax0dx0a2 44 ?? 1 x0dx0ax0dx0a2 22 ?? 0 x0dx0ax0dx0a2 11 ?? 0 x0dx0ax0dx0a2 5 ?? 1 x0dx0ax0dx0a2 2 ?? 1 x0dx0ax0dx0a2 1 ?? 0 x0dx0ax0dx0a0 ?? 1 x0dx0ax0dx0a· 十進制小數轉二進制數:"乘以2取整,順序輸出" x0dx0ax0dx0a例: x0dx0ax0dx0a(0.625)10= (0.101)2 x0dx0ax0dx0a0.625 x0dx0ax0dx0aX 2 x0dx0ax0dx0a1.25 x0dx0ax0dx0aX 2 x0dx0ax0dx0a0.5 x0dx0ax0dx0aX 2 x0dx0ax0dx0a1.0 x0dx0ax0dx0a2.八進制與二進制的轉換 x0dx0ax0dx0a例:將八進制的37.416轉換成二進制數: x0dx0ax0dx0a37 . 4 1 6 x0dx0ax0dx0a011 111 .100 001 110 x0dx0ax0dx0a即:(37.416)8 =(11111.10000111)2 x0dx0ax0dx0a例:將二進制的10110.0011 轉換成八進制: x0dx0ax0dx0a0 1 0 1 1 0 . 0 0 1 1 0 0 x0dx0ax0dx0a2 6 . 1 4 x0dx0ax0dx0a即:(10110.011)2 =(26.14)8 x0dx0ax0dx0a3.十六進制與二進制的轉換
例:將十六進制數5DF.9 轉換成二進制: x0dx0ax0dx0a5 D F . 9 x0dx0ax0dx0a0101 1101 1111.1001 x0dx0ax0dx0a即:(5DF.9)16 =(10111011111.1001)2 x0dx0ax0dx0a例:將二進制數1100001.111 轉換成十六進制: x0dx0ax0dx0a0110 0001 . 1110 x0dx0ax0dx0a6 1 . E x0dx0ax0dx0a即:(1100001.111)2 =(61.E)16