版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、十進制轉(zhuǎn)二進制:用2輾轉(zhuǎn)相除至結(jié)果為1 將余數(shù)和最后的1從下向上倒序?qū)?就是結(jié)果例如302302/2 = 151 余0 151/2 = 75 余1 75/2 = 37 余1 37/2 = 18 余1 18/2 = 9 余0 9/2 = 4 余1 4/2 = 2 余0 2/2 = 1 余0 故二進制為 二進制轉(zhuǎn)十進制從最后一位開始算,依次列為第0、1、2.位第n位的數(shù)(0或1)乘以2的n次方得到的結(jié)果相加就是答案例如:.轉(zhuǎn)十進制: 第0位:1乘2的0次方=1 1乘2的1次方=2 0乘2的2次方0 1乘2的3次方8 0乘2的4次方0 1乘2的5次方32 1乘2的6次方64 0乘2的7次方0 然后:
2、120 8032640107 二進制十進制107二進制轉(zhuǎn)十進制,十進制轉(zhuǎn)二進制的算法 閱讀: 5915 時間:2008-6-16 6:02:10 整理:華夏黑盟- 二進制轉(zhuǎn)十進制,十進制轉(zhuǎn)二進制的算法 十進制轉(zhuǎn)二進制: 用2輾轉(zhuǎn)相除至結(jié)果為1 將余數(shù)和最后的1從下向上倒序?qū)?就是結(jié)果 例如302 302/2 = 151 余0 151/2 = 75 余1 75/2 = 37 余1 37/2 = 18 余1 18/2 = 9 余0 9/2 = 4 余1 4/2 = 2 余0 2/2 = 1 余0 故二進制為 二進制轉(zhuǎn)十進制 從最后一位開始算,依次列為第0、1、2.位
3、第n位的數(shù)(0或1)乘以2的n次方 得到的結(jié)果相加就是答案 例如:.轉(zhuǎn)十進制: 第0位:1乘2的0次方=1 1乘2的1次方=2 0乘2的2次方0 1乘2的3次方8 0乘2的4次方0 1乘2的5次方32 1乘2的6次方64 0乘2的7次方0 然后:120 8032640107 二進制十進制107 一、二進制數(shù)轉(zhuǎn)換成十進制數(shù) 由二進制數(shù)轉(zhuǎn)換成十進制數(shù)的基本做法是,把二進制數(shù)首先寫成加權(quán)系數(shù)展開式,然后按十進制加法規(guī)則求和。這種做法稱為按權(quán)相加法。 二、十進制數(shù)轉(zhuǎn)換為二進制數(shù) 十進制數(shù)轉(zhuǎn)換為二進制數(shù)時,由于整數(shù)和小數(shù)的轉(zhuǎn)換方法不同,所以先將十進制數(shù)的整數(shù)部分和小數(shù)部分分別轉(zhuǎn)換后,再加以合并。 1.
4、十進制整數(shù)轉(zhuǎn)換為二進制整數(shù) 十進制整數(shù)轉(zhuǎn)換為二進制整數(shù)采用除2取余,逆序排列法。具體做法是:用2去除十進制整數(shù),可以得到一個商和余數(shù);再用2去除商,又會得到一個商和余數(shù),如此進行,直到商為零時為止,然后把先得到的余數(shù)作為二進制數(shù)的低位有效位,后得到的余數(shù)作為二進制數(shù)的高位有效位,依次排列起來。 2十進制小數(shù)轉(zhuǎn)換為二進制小數(shù) 十進制小數(shù)轉(zhuǎn)換成二進制小數(shù)采用乘2取整,順序排列法。具體做法是:用2乘十進制小數(shù),可以得到積,將積的整數(shù)部分取出,再用2乘余下的小數(shù)部分,又得到一個積,再將積的整數(shù)部分取出,如此進行,直到積中的小數(shù)部分為零,或者達到所要求的精度為止。 然后把取出的整數(shù)部分按順序排列起來,先
5、取的整數(shù)作為二進制小數(shù)的高位有效位,后取的整數(shù)作為低位有效位。 回答者:HackerKinsn - 試用期 一級 2-24 13:31 1二進制與十進制的轉(zhuǎn)換 (1)二進制轉(zhuǎn)十進制 方法:按權(quán)展開求和 例: (1011.01)2 (123022121120021122)10 (802100.25)10 (11.25)10 (2)十進制轉(zhuǎn)二進制 十進制整數(shù)轉(zhuǎn)二進制數(shù):除以2取余,逆序輸出 例: (89)10()2 2 89 2 44 1 2 22 0 2 11 0 2 5 1 2 2 1 2 1 0 0 1 十進制小數(shù)轉(zhuǎn)二進制數(shù):乘以2取整,順序輸出 例: (0625)10= (0101)2 0
6、625 X 2 125 X 2 05 X 2 10 2八進制與二進制的轉(zhuǎn)換 例:將八進制的37.416轉(zhuǎn)換成二進制數(shù): 37 4 1 6 011 111 100 001 110 即:(37.416)8 (11111.)2 例:將二進制的10110.0011 轉(zhuǎn)換成八進制: 0 1 0 1 1 0 . 0 0 1 1 0 0 2 6 . 1 4 即:(10110.011)2 (26.14)8 3十六進制與二進制的轉(zhuǎn)換 例:將十六進制數(shù)5DF.9 轉(zhuǎn)換成二進制: 5 D F 9 0101 1101 11111001 即:(5DF.9)16 (.1001)2 例:將二進制數(shù).111 轉(zhuǎn)換成十六進制:
7、 0110 0001 1110 6 1 E 即:(.111)2 (61.E)16 二進制,八進制十進制十六進制之間數(shù)據(jù)轉(zhuǎn)換分類 計算機理論 2006-7-18 19:02:45 瀏覽 12665 回復 4 編輯 刪除靜態(tài) 刪除 隱藏側(cè)邊欄 轉(zhuǎn)自 dygstudios . 十進制轉(zhuǎn)二進制(整數(shù)及小數(shù)部分): 1、把該十進制數(shù),用二因式分解,取余。 以235為例,轉(zhuǎn)為二進制 235除以2得117,余1 117除以2得58,余1 58除以2得29,余0 29除以2得14,余1 14除以2得7,余0 7除以2得3,余1 3除以2得1,余1 從得到的1開始寫起,余數(shù)倒排,加在它后面,就可得。 2、把十進
8、制中的小數(shù)部份,轉(zhuǎn)為二進制。 把該小數(shù)不斷乘2,取整,直至沒有小數(shù)為止,注意不是所有小數(shù)都能轉(zhuǎn)為二進制! 以0.75為例, 0.75剩以2得1.50,取整數(shù)1 0.50剩以2得1,取整數(shù)1,順序取數(shù)就可得0.11。 1、二進制數(shù)、八進制數(shù)、十六進制數(shù)轉(zhuǎn)十進制數(shù) 有一個公式:二進制數(shù)、八進制數(shù)、十六進制數(shù)的各位數(shù)字分別乖以各自的基數(shù)的(N-1)次方,其和相加之和便是相應(yīng)的十進制數(shù)。個位,N=1;十位,N=2.舉例: 110B=1*2的2次方+1*2的1次方+0*2的0次方=0+4+2+0=6D 110Q=1*8的2次方+1*8的1次方+0*8的0次方=64+8+0=72D 110H=1*16的2
9、次方+1*16的1次方+0*16的0次方=256+16+0=272D 2、十進制數(shù)轉(zhuǎn)二進制數(shù)、八進制數(shù)、十六進制數(shù) 方法是相同的,即整數(shù)部分用除基取余的算法,小數(shù)部分用乘基取整的方法,然后將整數(shù)與小數(shù)部分拼接成一個數(shù)作為轉(zhuǎn)換的最后結(jié)果。 例:見四級指導16頁。 3、二進制數(shù)轉(zhuǎn)換成其它數(shù)據(jù)類型 3-1二進制轉(zhuǎn)八進制: 從小數(shù)點位置開始,整數(shù)部分向左,小數(shù)部分向右,每三位二進制為一組用一位八進制的數(shù)字來表示,不足三位的用0補足, 就是一個相應(yīng)八進制數(shù)的表示。 .B=26.14Q 八進制轉(zhuǎn)二進制反之則可。 3-2二進制轉(zhuǎn)十進制: 見1 3-3二進制轉(zhuǎn)十六進制: 從小數(shù)點位置開始,整數(shù)部分向左,小數(shù)部
10、分向右,每四位二進制為一組用一位十六進制的數(shù)字來表示, 不足四位的用0補足,就是一個相應(yīng)十六進制數(shù)的表示。 .B=26.14H 十進制轉(zhuǎn)各進制 要將十進制轉(zhuǎn)為各進制的方式,只需除以各進制的權(quán)值,取得其余數(shù),第一次的余數(shù)當個位數(shù),第二次余數(shù)當十位數(shù),其余依此類推,直到被除數(shù)小于權(quán)值,最后的被除數(shù)當最高位數(shù)。 一、十進制轉(zhuǎn)二進制 如:55轉(zhuǎn)為二進制 255 271個位 131第二位 61第三位 30第四位 11第五位 最后被除數(shù)1為第七位,即得 二、十進制轉(zhuǎn)八進制 如:5621轉(zhuǎn)為八進制 85621 7025第一位(個位) 876第二位 107第三位 12第四位 最后得八進制數(shù):12765 三、十
11、進制數(shù)十六進制 如:76521轉(zhuǎn)為十六進制 1676521 47829第一位(個位) 29814即E第二位 1810即A第三位 12第四位 最后得12AE9 二進制與十六進制的關(guān)系 2進制00000001001000110100010101100111 16進制01234567 2進制10001001101010111100110111101111 16進制89a(10)b(11)c(12)d(13)e(14)f(15) 可以用四位數(shù)的二進制數(shù)來代表一個16進制,如3A16轉(zhuǎn)為二進制為: 3為0011,A為1010,合并起來為。可以將最左邊的0去掉得 右要將二進制轉(zhuǎn)為16進制,只需將二進制的位
12、數(shù)由右向左每四位一個單位分隔,將各單位對照出16進制的值即可。 二進制與八進制間的關(guān)系 二進制000001010011100101110111 八進制01234567 二進制與八進制的關(guān)系類似于二進制與十六進制的關(guān)系,以八進制的各數(shù)為0到7,以三位二進制數(shù)來表示。如要將51028轉(zhuǎn)為二進制,5為101,1為001,0為000,2為010,將這些數(shù)的二進制合并后為02,即是二進制的值。 若要將二進制轉(zhuǎn)為八進制,將二進制的位數(shù)由右向左每三位一個單位分隔,將事單位對照出八進制的值即可。 二進制、八進制、十進制、十六進制之間轉(zhuǎn)換 Posted on 2008-09-12 00:28 SmartSton
13、e 閱讀(1868) 評論(2) 編輯 收藏 網(wǎng)摘 一、 十進制與二進制之間的轉(zhuǎn)換(1) 十進制轉(zhuǎn)換為二進制,分為整數(shù)部分和小數(shù)部分 整數(shù)部分方法:除2取余法,即每次將整數(shù)部分除以2,余數(shù)為該位權(quán)上的數(shù),而商繼續(xù)除以2,余數(shù)又為上一個位權(quán)上的數(shù),這個步驟一直持續(xù)下去,直到商為0為止,最后讀數(shù)時候,從最后一個余數(shù)讀起,一直到最前面的一個余數(shù)。下面舉例:例:將十進制的168轉(zhuǎn)換為二進制得出結(jié)果 將十進制的168轉(zhuǎn)換為二進制,()2分析:第一步,將168除以2,商84,余數(shù)為0。第二步,將商84除以2,商42余數(shù)為0。第三步,將商42除以2,商21余數(shù)為0。第四步,將商21除以2,商10余數(shù)為1。第
14、五步,將商10除以2,商5余數(shù)為0。第六步,將商5除以2,商2余數(shù)為1。第七步,將商2除以2,商1余數(shù)為0。第八步,將商1除以2,商0余數(shù)為1。第九步,讀數(shù),因為最后一位是經(jīng)過多次除以2才得到的,因此它是最高位,讀數(shù)字從最后的余數(shù)向前讀,即(2) 小數(shù)部分方法:乘2取整法,即將小數(shù)部分乘以2,然后取整數(shù)部分,剩下的小數(shù)部分繼續(xù)乘以2,然后取整數(shù)部分,剩下的小數(shù)部分又乘以2,一直取到小數(shù)部分為零為止。如果永遠不能為零,就同十進制數(shù)的四舍五入一樣,按照要求保留多少位小數(shù)時,就根據(jù)后面一位是0還是1,取舍,如果是零,舍掉,如果是1,向入一位。換句話說就是0舍1入。讀數(shù)要從前面的整數(shù)讀到后面的整數(shù),下
15、面舉例:例1:將0.125換算為二進制得出結(jié)果:將0.125換算為二進制(0.001)2分析:第一步,將0.125乘以2,得0.25,則整數(shù)部分為0,小數(shù)部分為0.25;第二步, 將小數(shù)部分0.25乘以2,得0.5,則整數(shù)部分為0,小數(shù)部分為0.5;第三步, 將小數(shù)部分0.5乘以2,得1.0,則整數(shù)部分為1,小數(shù)部分為0.0;第四步,讀數(shù),從第一位讀起,讀到最后一位,即為0.001。例2,將0.45轉(zhuǎn)換為二進制(保留到小數(shù)點第四位)大家從上面步驟可以看出,當?shù)谖宕巫龀朔〞r候,得到的結(jié)果是0.4,那么小數(shù)部分繼續(xù)乘以2,得0.8,0.8又乘以2的,到1.6這樣一直乘下去,最后不可能得到小數(shù)部分為
16、零,因此,這個時候只好學習十進制的方法進行四舍五入了,但是二進制只有0和1兩個,于是就出現(xiàn)0舍1入。這個也是計算機在轉(zhuǎn)換中會產(chǎn)生誤差,但是由于保留位數(shù)很多,精度很高,所以可以忽略不計。那么,我們可以得出結(jié)果將0.45轉(zhuǎn)換為二進制約等于0.0111上面介紹的方法是十進制轉(zhuǎn)換為為二進制的方法,需要大家注意的是:1) 十進制轉(zhuǎn)換為二進制,需要分成整數(shù)和小數(shù)兩個部分分別轉(zhuǎn)換2) 當轉(zhuǎn)換整數(shù)時,用的除2取余法,而轉(zhuǎn)換小數(shù)時候,用的是乘2取整法3) 注意他們的讀數(shù)方向因此,我們從上面的方法,我們可以得出十進制數(shù)168.125轉(zhuǎn)換為二進制為.001,或者十進制數(shù)轉(zhuǎn)換為二進制數(shù)約等于.0111。(3) 二進制
17、轉(zhuǎn)換為十進制 不分整數(shù)和小數(shù)部分方法:按權(quán)相加法,即將二進制每位上的數(shù)乘以權(quán),然后相加之和即是十進制數(shù)。例將二進制數(shù)101.101轉(zhuǎn)換為十進制數(shù)。得出結(jié)果:(101.101)2=(5.625)10大家在做二進制轉(zhuǎn)換成十進制需要注意的是1) 要知道二進制每位的權(quán)值2) 要能求出每位的值二、 二進制與八進制之間的轉(zhuǎn)換首先,我們需要了解一個數(shù)學關(guān)系,即23=8,24=16,而八進制和十六進制是用這關(guān)系衍生而來的,即用三位二進制表示一位八進制,用四位二進制表示一位十六進制數(shù)。接著,記住4個數(shù)字8、4、2、1(23=8、22=4、21=2、20=1)?,F(xiàn)在我們來練習二進制與八進制之間的轉(zhuǎn)換。(1) 二進
18、制轉(zhuǎn)換為八進制方法:取三合一法,即從二進制的小數(shù)點為分界點,向左(向右)每三位取成一位,接著將這三位二進制按權(quán)相加,得到的數(shù)就是一位八位二進制數(shù),然后,按順序進行排列,小數(shù)點的位置不變,得到的數(shù)字就是我們所求的八進制數(shù)。如果向左(向右)取三位后,取到最高(最低)位時候,如果無法湊足三位,可以在小數(shù)點最左邊(最右邊),即整數(shù)的最高位(最低位)添0,湊足三位。例將二進制數(shù).101轉(zhuǎn)換為八進制得到結(jié)果:將.101轉(zhuǎn)換為八進制為56.5 將二進制數(shù)1101.1轉(zhuǎn)換為八進制得到結(jié)果:將1101.1轉(zhuǎn)換為八進制為15.4(2) 將八進制轉(zhuǎn)換為二進制方法:取一分三法,即將一位八進制數(shù)分解成三位二進制數(shù),用三
19、位二進制按權(quán)相加去湊這位八進制數(shù),小數(shù)點位置照舊。例: 將八進制數(shù)67.54轉(zhuǎn)換為二進制因此,將八進制數(shù)67.54轉(zhuǎn)換為二進制數(shù)為.,即.1011大家從上面這道題可以看出,計算八進制轉(zhuǎn)換為二進制首先,將八進制按照從左到右,每位展開為三位,小數(shù)點位置不變?nèi)缓?,按每位展開為22,21,20(即4、2、1)三位去做湊數(shù),即a22+ b21 +c20=該位上的數(shù)(a=1或者a=0,b=1或者b=0,c=1或者c=0),將abc排列就是該位的二進制數(shù)接著,將每位上轉(zhuǎn)換成二進制數(shù)按順序排列最后,就得到了八進制轉(zhuǎn)換成二進制的數(shù)字。以上的方法就是二進制與八進制的互換,大家在做題的時候需要注意的是1) 他們之間
20、的互換是以一位與三位轉(zhuǎn)換,這個有別于二進制與十進制轉(zhuǎn)換2) 大家在做添0和去0的時候要注意,是在小數(shù)點最左邊或者小數(shù)點的最右邊(即整數(shù)的最高位和小數(shù)的最低位)才能添0或者去0,否則將產(chǎn)生錯誤三、 二進制與十六進制的轉(zhuǎn)換方法:與二進制與八進制轉(zhuǎn)換相似,只不過是一位(十六)與四位(二進制)的轉(zhuǎn)換,下面具體講解(1) 二進制轉(zhuǎn)換為十六進制方法:取四合一法,即從二進制的小數(shù)點為分界點,向左(向右)每四位取成一位,接著將這四位二進制按權(quán)相加,得到的數(shù)就是一位十六位二進制數(shù),然后,按順序進行排列,小數(shù)點的位置不變,得到的數(shù)字就是我們所求的十六進制數(shù)。如果向左(向右)取四位后,取到最高(最低)位時候,如果無
21、法湊足四位,可以在小數(shù)點最左邊(最右邊),即整數(shù)的最高位(最低位)添0,湊足四位。例:將二進制.1011轉(zhuǎn)換為十六進制得到結(jié)果:將二進制.1011轉(zhuǎn)換為十六進制為E9.B 例:將.101轉(zhuǎn)換為十六進制因此得到結(jié)果:將二進制.101轉(zhuǎn)換為十六進制為2B.A(2)將十六進制轉(zhuǎn)換為二進制方法:取一分四法,即將一位十六進制數(shù)分解成四位二進制數(shù),用四位二進制按權(quán)相加去湊這位十六進制數(shù),小數(shù)點位置照舊。將十六進制6E.2轉(zhuǎn)換為二進制數(shù)因此得到結(jié)果:將十六進制6E.2轉(zhuǎn)換為二進制為.0010即.001四、八進制與十六進制的轉(zhuǎn)換方法:一般不能互相直接轉(zhuǎn)換,一般是將八進制(或十六進制)轉(zhuǎn)換為二進制,然后再將二進
22、制轉(zhuǎn)換為十六進制(或八進制),小數(shù)點位置不變。那么相應(yīng)的轉(zhuǎn)換請參照上面二進制與八進制的轉(zhuǎn)換和二進制與十六進制的轉(zhuǎn)五、八進制與十進制的轉(zhuǎn)換(1)八進制轉(zhuǎn)換為十進制方法:按權(quán)相加法,即將八進制每位上的數(shù)乘以位權(quán),然后相加之和即是十進制數(shù)。例:將八進制數(shù)67.35轉(zhuǎn)換為十進制(2)十進制轉(zhuǎn)換為八進制十進制轉(zhuǎn)換成八進制有兩種方法:1)間接法:先將十進制轉(zhuǎn)換成二進制,然后將二進制又轉(zhuǎn)換成八進制2)直接法:前面我們講過,八進制是由二進制衍生而來的,因此我們可以采用與十進制轉(zhuǎn)換為二進制相類似的方法,還是整數(shù)部分的轉(zhuǎn)換和小數(shù)部分的轉(zhuǎn)換,下面來具體講解一下:整數(shù)部分方法:除8取余法,即每次將整數(shù)部分除以8,余數(shù)
23、為該位權(quán)上的數(shù),而商繼續(xù)除以8,余數(shù)又為上一個位權(quán)上的數(shù),這個步驟一直持續(xù)下去,直到商為0為止,最后讀數(shù)時候,從最后一個余數(shù)起,一直到最前面的一個余數(shù)。小數(shù)部分方法:乘8取整法,即將小數(shù)部分乘以8,然后取整數(shù)部分,剩下的小數(shù)部分繼續(xù)乘以8,然后取整數(shù)部分,剩下的小數(shù)部分又乘以8,一直取到小數(shù)部分為零為止。如果永遠不能為零,就同十進制數(shù)的四舍五入一樣,暫取個名字叫3舍4入。例:將十進制數(shù)796.轉(zhuǎn)換為八進制數(shù)解:先將這個數(shù)字分為整數(shù)部分796和小數(shù)部分0.整數(shù)部分小數(shù)部分因此,得到結(jié)果十進制796.轉(zhuǎn)換八進制為1434.55上面的方法大家可以驗證一下,你可以先將十進制轉(zhuǎn)換,然后在轉(zhuǎn)換為八進制,這
24、樣看得到的結(jié)果是否一樣六、十六進制與十進制的轉(zhuǎn)換十六進制與八進制有很多相似之處,大家可以參照上面八進制與十進制的轉(zhuǎn)換自己試試這兩個進制之間的轉(zhuǎn)換。通過上面對各種進制之間的轉(zhuǎn)換,我們可以將前面的轉(zhuǎn)換圖重新完善一下:本文介紹了二進制、十進制、八進制、十六進制四種進制之間相互的轉(zhuǎn)換,大家在轉(zhuǎn)換的時候要注意轉(zhuǎn)換的方法,以及步驟,特別是十進制轉(zhuǎn)換為期于三種進制之間,要分為整數(shù)部分和小數(shù)部分,最后就是小數(shù)點的位置。但是要保證考試中不出現(xiàn)錯誤還是需要大家經(jīng)常練習,這樣才能熟能生巧。 第六章二進制、八進制、十六進制6.1 為什么需要八進制和十六進制?6.2 二、八、十六進制數(shù)轉(zhuǎn)換到十進制數(shù) 6.2.1 二進制
25、數(shù)轉(zhuǎn)換為十進制數(shù) 6.2.2 八進制數(shù)轉(zhuǎn)換為十進制數(shù) 6.2.3 八進制數(shù)的表達方法 6.2.4 八進制數(shù)在轉(zhuǎn)義符中的使用 6.2.5 十六進制數(shù)轉(zhuǎn)換成十進制數(shù) 6.2.6 十六進制數(shù)的表達方法 6.2.7 十六進制數(shù)在轉(zhuǎn)義符中的使用6.3 十進制數(shù)轉(zhuǎn)換到二、八、十六進制數(shù) 6.3.1 10進制數(shù)轉(zhuǎn)換為2進制數(shù) 6.3.2 10進制數(shù)轉(zhuǎn)換為8、16進制數(shù)6.4 二、十六進制數(shù)互相轉(zhuǎn)換6.5 原碼、反碼、補碼6.6 通過調(diào)試查看變量的值6.7 本章小結(jié)這是一節(jié)“前不著村后不著店”的課。不同進制之間的轉(zhuǎn)換純粹是數(shù)學上的計算。不過,你不必擔心會有么復雜,無非是乘或除的計算。生活中其實很多地方的計數(shù)方
26、法都多少有點不同進制的影子。比如我們最常用的10進制,其實起源于人有10個指頭。如果我們的祖先始終沒有擺脫手腳不分的境況,我想我們現(xiàn)在一定是在使用20進制。至于二進制沒有襪子稱為0只襪子,有一只襪子稱為1只襪子,但若有兩襪子,則我們常說的是:1雙襪子。生活中還有:七進制,比如星期。十六進制,比如小時或“一打”,六十進制,比如分鐘或角度(該版課程的內(nèi)容更新及訂正均已停止)舊版課程打包下載-想看涵蓋“面向?qū)ο蟆薄ⅰ皥D形編程”、“泛型編程”的“最新2008年版 白話C+”課程,請點擊! (另有: 博客版) 6.1 為什么需要八進制和十六進制?編程中,我們常用的還是10進制必竟C/C+是高級語言。比如
27、:int a = 100,b = 99;不過,由于數(shù)據(jù)在計算機中的表示,最終以二進制的形式存在,所以有時候使用二進制,可以更直觀地解決問題。但,二進制數(shù)太長了。比如int 類型占用4個字節(jié),32位。比如100,用int類型的二進制數(shù)表達將是:0000 0000 0000 0000 0110 0100面對這么長的數(shù)進行思考或操作,沒有人會喜歡。因此,C,C+ 沒有提供在代碼直接寫二進制數(shù)的方法。用16進制或8進制可以解決這個問題。因為,進制越大,數(shù)的表達長度也就越短。不過,為什么偏偏是16或8進制,而不其它的,諸如9或20進制呢?2、8、16,分別是2的1次方,3次方,4次方。這一點使得三種進制
28、之間可以非常直接地互相轉(zhuǎn)換。8進制或16進制縮短了二進制數(shù),但保持了二進制數(shù)的表達特點。在下面的關(guān)于進制轉(zhuǎn)換的課程中,你可以發(fā)現(xiàn)這一點。6.2 二、八、十六進制數(shù)轉(zhuǎn)換到十進制數(shù)6.2.1 二進制數(shù)轉(zhuǎn)換為十進制數(shù)二進制數(shù)第0位的權(quán)值是2的0次方,第1位的權(quán)值是2的1次方所以,設(shè)有一個二進制數(shù):0110 0100,轉(zhuǎn)換為10進制為:下面是豎式:0110 0100 換算成 十進制第0位 0 * 20 = 0第1位 0 * 21 = 0第2位 1 * 22 = 4第3位 0 * 23 = 0第4位 0 * 24 = 0第5位 1 * 25 = 32第6位 1 * 26 = 64第7位 0 * 27 =
29、 0 - 100 用橫式計算為:0 * 20 + 0 * 21 + 1 * 22 + 1 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 1000乘以多少都是0,所以我們也可以直接跳過值為0的位:1 * 22 + 1 * 23 + 1 * 25 + 1 * 26 = 1006.2.2 八進制數(shù)轉(zhuǎn)換為十進制數(shù)八進制就是逢8進1。八進制數(shù)采用 07這八數(shù)來表達一個數(shù)。八進制數(shù)第0位的權(quán)值為8的0次方,第1位權(quán)值為8的1次方,第2位權(quán)值為8的2次方所以,設(shè)有一個八進制數(shù):1507,轉(zhuǎn)換為十進制為:用豎式表示:1507換算成十進制。第0位 7 * 80 = 7第1
30、位 0 * 81 = 0 第2位 5 * 82 = 320 第3位 1 * 83 = 512 - 839同樣,我們也可以用橫式直接計算:7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839結(jié)果是,八進制數(shù) 1507 轉(zhuǎn)換成十進制數(shù)為 8396.2.3 八進制數(shù)的表達方法C,C+語言中,如何表達一個八進制數(shù)呢?如果這個數(shù)是 876,我們可以斷定它不是八進制數(shù),因為八進制數(shù)中不可能出7以上的阿拉伯數(shù)字。但如果這個數(shù)是123、是567,或,那么它是八進制數(shù)還是10進制數(shù),都有可能。所以,C,C+規(guī)定,一個數(shù)如果要指明它采用八進制,必須在它前面加上一個0,如:123是十進制,
31、但0123則表示采用八進制。這就是八進制數(shù)在C、C+中的表達方法。由于C和C+都沒有提供二進制數(shù)的表達方法,所以,這里所學的八進制是我們學習的,CtC+語言的數(shù)值表達的第二種進制法。現(xiàn)在,對于同樣一個數(shù),比如是100,我們在代碼中可以用平常的10進制表達,例如在變量初始化時:int a = 100;我們也可以這樣寫:int a = 0144; /0144是八進制的100;一個10進制數(shù)如何轉(zhuǎn)成8進制,我們后面會學到。千萬記住,用八進制表達時,你不能少了最前的那個0。否則計算機會通通當成10進制。不過,有一個地方使用八進制數(shù)時,卻不能使用加0,那就是我們前面學的用于表達字符的“轉(zhuǎn)義符”表達法。6
32、.2.4 八進制數(shù)在轉(zhuǎn)義符中的使用我們學過用一個轉(zhuǎn)義符加上一個特殊字母來表示某個字符的方法,如:n表示換行(line),而t表示Tab字符,則表示單引號。今天我們又學習了一種使用轉(zhuǎn)義符的方法:轉(zhuǎn)義符后面接一個八進制數(shù),用于表示ASCII碼等于該值的字符。比如,查一下第5章中的ASCII碼表,我們找到問號字符(?)的ASCII值是63,那么我們可以把它轉(zhuǎn)換為八進值:77,然后用 77來表示?。由于是八進制,所以本應(yīng)寫成 077,但因為C,C+規(guī)定不允許使用斜杠加10進制數(shù)來表示字符,所以這里的0可以不寫。事實上我們很少在實際編程中非要用轉(zhuǎn)義符加八進制數(shù)來表示一個字符,所以,6.2.4小節(jié)的內(nèi)容,
33、大家僅僅了解就行。6.2.5 十六進制數(shù)轉(zhuǎn)換成十進制數(shù)2進制,用兩個阿拉伯數(shù)字:0、1;8進制,用八個阿拉伯數(shù)字:0、1、2、3、4、5、6、7;10進制,用十個阿拉伯數(shù)字:0到9;16進制,用十六個阿拉伯數(shù)字等等,阿拉伯人或說是印度人,只發(fā)明了10個數(shù)字?。?6進制就是逢16進1,但我們只有09這十個數(shù)字,所以我們用A,B,C,D,E,F(xiàn)這五個字母來分別表示10,11,12,13,14,15。字母不區(qū)分大小寫。十六進制數(shù)的第0位的權(quán)值為16的0次方,第1位的權(quán)值為16的1次方,第2位的權(quán)值為16的2次方所以,在第N(N從0開始)位上,如果是是數(shù) X (X 大于等于0,并且X小于等于 15,即
34、:F)表示的大小為 X * 16的N次方。假設(shè)有一個十六進數(shù) 2AF5, 那么如何換算成10進制呢?用豎式計算: 2AF5換算成10進制:第0位: 5 * 160 = 5第1位: F * 161 = 240第2位: A * 162 = 2560第3位: 2 * 163 = 8192 - 10997 直接計算就是:5 * 160 + F * 161 + A * 162 + 2 * 163 = 10997(別忘了,在上面的計算中,A表示10,而F表示15)現(xiàn)在可以看出,所有進制換算成10進制,關(guān)鍵在于各自的權(quán)值不同。假設(shè)有人問你,十進數(shù) 1234 為什么是 一千二百三十四?你盡可以給他這么一個算式
35、:1234 = 1 * 103 + 2 * 102 + 3 * 101 + 4 * 1006.2.6 十六進制數(shù)的表達方法如果不使用特殊的書寫形式,16進制數(shù)也會和10進制相混。隨便一個數(shù):9876,就看不出它是16進制或10進制。C,C+規(guī)定,16進制數(shù)必須以 0x開頭。比如 0x1表示一個16進制數(shù)。而1則表示一個十進制。另外如:0xff,0xFF,0X102A,等等。其中的x也也不區(qū)分大小寫。(注意:0x中的0是數(shù)字0,而不是字母O)以下是一些用法示例:int a = 0x100F;int b = 0x70 + a;至此,我們學完了所有進制:10進制,8進制,16進制數(shù)的表達方式。最后一
36、點很重要,C/C+中,10進制數(shù)有正負之分,比如12表示正12,而-12表示負12,;但8進制和16進制只能用達無符號的正整數(shù),如果你在代碼中里:-078,或者寫:-0xF2,C,C+并不把它當成一個負數(shù)。6.2.7 十六進制數(shù)在轉(zhuǎn)義符中的使用轉(zhuǎn)義符也可以接一個16進制數(shù)來表示一個字符。如在6.2.4小節(jié)中說的 ? 字符,可以有以下表達方式:? /直接輸入字符77 /用八進制,此時可以省略開頭的00x3F /用十六進制同樣,這一小節(jié)只用于了解。除了空字符用八進制數(shù) 0 表示以外,我們很少用后兩種方法表示一個字符。6.3 十進制數(shù)轉(zhuǎn)換到二、八、十六進制數(shù)6.3.1 10進制數(shù)轉(zhuǎn)換為2進制數(shù)給你一
37、個十進制,比如:6,如果將它轉(zhuǎn)換成二進制數(shù)呢?10進制數(shù)轉(zhuǎn)換成二進制數(shù),這是一個連續(xù)除2的過程:把要轉(zhuǎn)換的數(shù),除以2,得到商和余數(shù),將商繼續(xù)除以2,直到商為0。最后將所有余數(shù)倒序排列,得到數(shù)就是轉(zhuǎn)換結(jié)果。聽起來有些糊涂?我們結(jié)合例子來說明。比如要轉(zhuǎn)換6為二進制數(shù)。“把要轉(zhuǎn)換的數(shù),除以2,得到商和余數(shù)”。那么:要轉(zhuǎn)換的數(shù)是6, 6 2,得到商是3,余數(shù)是0。 (不要告訴我你不會計算63?。皩⑸汤^續(xù)除以2,直到商為0”現(xiàn)在商是3,還不是0,所以繼續(xù)除以2。那就: 3 2, 得到商是1,余數(shù)是1。“將商繼續(xù)除以2,直到商為0”現(xiàn)在商是1,還不是0,所以繼續(xù)除以2。那就: 1 2, 得到商是0,余數(shù)
38、是1 (拿筆紙算一下,12是不是商0余1!)“將商繼續(xù)除以2,直到商為0最后將所有余數(shù)倒序排列”好極!現(xiàn)在商已經(jīng)是0。我們?nèi)斡嬎阋来蔚玫接鄶?shù)分別是:0、1、1,將所有余數(shù)倒序排列,那就是:110了!6轉(zhuǎn)換成二進制,結(jié)果是110。把上面的一段改成用表格來表示,則為:被除數(shù)計算過程商余數(shù)66/23033/21111/201(在計算機中,用 / 來表示) 如果是在考試時,我們要畫這樣表還是有點費時間,所更常見的換算過程是使用下圖的連除: (圖:1) 請大家對照圖,表,及文字說明,并且自已拿筆計算一遍如何將6轉(zhuǎn)換為二進制數(shù)。 說了半天,我們的轉(zhuǎn)換結(jié)果對嗎?二進制數(shù)110是6嗎?你已經(jīng)學會如何將二進制
39、數(shù)轉(zhuǎn)換成10進制數(shù)了,所以請現(xiàn)在就計算一下110換成10進制是否就是6。 6.3.2 10進制數(shù)轉(zhuǎn)換為8、16進制數(shù)非常開心,10進制數(shù)轉(zhuǎn)換成8進制的方法,和轉(zhuǎn)換為2進制的方法類似,惟一變化:除數(shù)由2變成8。來看一個例子,如何將十進制數(shù)120轉(zhuǎn)換成八進制數(shù)。用表格表示:被除數(shù)計算過程商余數(shù)120120/81501515/81711/801120轉(zhuǎn)換為8進制,結(jié)果為:170。非常非常開心,10進制數(shù)轉(zhuǎn)換成16進制的方法,和轉(zhuǎn)換為2進制的方法類似,惟一變化:除數(shù)由2變成16。同樣是120,轉(zhuǎn)換成16進制則為:被除數(shù)計算過程商余數(shù)120120/167877/1607120轉(zhuǎn)換為16進制,結(jié)果為:78
40、。請拿筆紙,采用(圖:1)的形式,演算上面兩個表的過程。6.4 二、十六進制數(shù)互相轉(zhuǎn)換二進制和十六進制的互相轉(zhuǎn)換比較重要。不過這二者的轉(zhuǎn)換卻不用計算,每個C,C+程序員都能做到看見二進制數(shù),直接就能轉(zhuǎn)換為十六進制數(shù),反之亦然。我們也一樣,只要學完這一小節(jié),就能做到。首先我們來看一個二進制數(shù):1111,它是多少呢?你可能還要這樣計算:1 * 20 + 1 * 21 + 1 * 22 + 1 * 23 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。然而,由于1111才4位,所以我們必須直接記住它每一位的權(quán)值,并且是從高位往低位記,:8、4、2、1。即,最高位的權(quán)值為23
41、 8,然后依次是 22 4,212, 20 1。記住8421,對于任意一個4位的二進制數(shù),我們都可以很快算出它對應(yīng)的10進制值。下面列出四位二進制數(shù) xxxx 所有可能的值(中間略過部分)僅4位的2進制數(shù) 快速計算方法 十進制值 十六進值1111 = 8 + 4 + 2 + 1 = 15 F1110 = 8 + 4 + 2 + 0 = 14 E1101 = 8 + 4 + 0 + 1 = 13 D1100 = 8 + 4 + 0 + 0 = 12 C1011 = 8 + 4 + 0 + 1 = 11 B1010 = 8 + 0 + 2 + 0 = 10 A1001 = 8 + 0 + 0 +
42、1 = 10 9.0001 = 0 + 0 + 0 + 1 = 1 10000 = 0 + 0 + 0 + 0 = 0 0二進制數(shù)要轉(zhuǎn)換為十六進制,就是以4位一段,分別轉(zhuǎn)換為十六進制。如(上行為二制數(shù),下面為對應(yīng)的十六進制):1111 1101 , 1010 0101 , 1001 1011F D , A 5 , 9 B反過來,當我們看到 FD時,如何迅速將它轉(zhuǎn)換為二進制數(shù)呢?先轉(zhuǎn)換F:看到F,我們需知道它是15(可能你還不熟悉AF這五個數(shù)),然后15如何用8421湊呢?應(yīng)該是8 + 4 + 2 + 1,所以四位全為1 :1111。接著轉(zhuǎn)換 D:看到D,知道它是13,13如何用8421湊呢?應(yīng)
43、該是:8 + 2 + 1,即:1011。所以,FD轉(zhuǎn)換為二進制數(shù),為: 1111 1011由于十六進制轉(zhuǎn)換成二進制相當直接,所以,我們需要將一個十進制數(shù)轉(zhuǎn)換成2進制數(shù)時,也可以先轉(zhuǎn)換成16進制,然后再轉(zhuǎn)換成2進制。比如,十進制數(shù) 1234轉(zhuǎn)換成二制數(shù),如果要一直除以2,直接得到2進制數(shù),需要計算較多次數(shù)。所以我們可以先除以16,得到16進制數(shù):被除數(shù)計算過程商余數(shù)12341234/167727777/16413 (D)44/1604結(jié)果16進制為: 0x4D2然后我們可直接寫出0x4D2的二進制形式: 0100 1011 0010。其中對映關(guān)系為:0100 - 41011 - D0010 -
44、2同樣,如果一個二進制數(shù)很長,我們需要將它轉(zhuǎn)換成10進制數(shù)時,除了前面學過的方法是,我們還可以先將這個二進制轉(zhuǎn)換成16進制,然后再轉(zhuǎn)換為10進制。下面舉例一個int類型的二進制數(shù): 我們按四位一組轉(zhuǎn)換為16進制: 6D E5 AF 1B 6.5 原碼、反碼、補碼結(jié)束了各種進制的轉(zhuǎn)換,我們來談?wù)劻硪粋€話題:原碼、反碼、補碼。我們已經(jīng)知道計算機中,所有數(shù)據(jù)最終都是使用二進制數(shù)表達。我們也已經(jīng)學會如何將一個10進制數(shù)如何轉(zhuǎn)換為二進制數(shù)。不過,我們?nèi)匀粵]有學習一個負數(shù)如何用二進制表達。比如,假設(shè)有一 int 類型的數(shù),值為5,那么,我們知道它在計算機中表示為: 5轉(zhuǎn)換成二制是101,不過int類型的數(shù)
45、占用4字節(jié)(32位),所以前面填了一堆0?,F(xiàn)在想知道,-5在計算機中如何表示?在計算機中,負數(shù)以其正值的補碼形式表達。什么叫補碼呢?這得從原碼,反碼說起。原碼:一個整數(shù),按照絕對值大小轉(zhuǎn)換成的二進制數(shù),稱為原碼。比如 是 5的 原碼。反碼:將二進制數(shù)按位取反,所得的新二進制數(shù)稱為原二進制數(shù)的反碼。取反操作指:原為1,得0;原為0,得1。(1變0; 0變1)比如:將 每一位取反,得 。稱: 是 的反碼。反碼是相互的,所以也可稱: 和 互為反碼。補碼:反碼加1稱為補碼。也就是說,要得到一個數(shù)的補碼,先得到反碼,然后將反碼加上1,所得數(shù)稱為補碼。比如: 的反碼是: 。那么,補碼為: + 1 = 所以,-5 在計算機中表達為: 。轉(zhuǎn)換為十六進制:0xFFFFFFFB。再舉一例,我們來看整數(shù)-1在計算機中如何表示。假設(shè)這也是一個int類型,那么:1、先取1的原碼: 2、得反碼: 3、得補碼: 可見,1在計算機里用二進制表達就是全1。16進制為:0xFFFF
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 外貿(mào)代理服務(wù)協(xié)議(2025年客戶信息保密)
- 2026年廣東建設(shè)職業(yè)技術(shù)學院單招職業(yè)技能考試模擬試題帶答案解析
- 2026年河南女子職業(yè)學院單招綜合素質(zhì)筆試備考試題帶答案解析
- 2026年湖南勞動人事職業(yè)學院高職單招職業(yè)適應(yīng)性測試備考試題有答案解析
- 投資合作分成合同協(xié)議2025年投資比例
- 2026年湖北水利水電職業(yè)技術(shù)學院單招綜合素質(zhì)筆試備考題庫帶答案解析
- 2026年廣西物流職業(yè)技術(shù)學院單招職業(yè)技能筆試參考題庫帶答案解析
- 碳匯項目開發(fā)服務(wù)協(xié)議(林業(yè))2025年合同書范本
- 稅務(wù)代理服務(wù)協(xié)議2025年稅務(wù)服務(wù)內(nèi)容
- 2026年貴州應(yīng)用技術(shù)職業(yè)學院單招綜合素質(zhì)考試備考試題帶答案解析
- 2025年秋季第一學期學校語文教研組工作總結(jié)(二):攜手教研之舟漫溯語文之河【課件】
- 初中歷史區(qū)域國別研究教學與跨學科整合課題報告教學研究課題報告
- 檔案工作責任追責制度
- 2024-2025學年重慶市南開中學七年級(上)期末道德與法治試卷(含答案)
- 【語文】廣東省深圳市寶安區(qū)寶城小學二年級上冊期末復習試題(含答案)
- 2025長影集團有限責任公司招聘3人筆試模擬試題及答案解析
- 2025西藏日喀則市薩迦縣招聘專職網(wǎng)格員11人筆試備考題庫及答案解析
- 節(jié)能工程監(jiān)理質(zhì)量評估報告范本
- 攝影取景角度課件
- 浙江省中醫(yī)醫(yī)療技術(shù)感染預防與控制標準操作規(guī)程(試行)
- 2025年中國儲備糧管理集團有限公司招聘筆試考點考試題庫及答案
評論
0/150
提交評論