下面在安靜的音樂中,讓我們開始學習吧
在我們接觸編程知識時,總會接觸有關進位轉換的知識,最常見的就是10進位與二進位或十六進位之間的轉換,很多時候我們總會遺忘,雖然現在也出現了很多可以直接使用的網絡在線的進位轉換工具,但考試中,我們就要靠自己通過公式進行運算了。今天就跟大家分享一下有關進位轉換的理論知識,大家可以通過對比從裡面發現共同點,這樣便於我們理解記憶。
在進行講解之前,我們先在下面放置一個對應表,因為在理解下面轉換的時候,你可以隨時查看該表。
一、 十進位與二進位之間的轉換
(1) 十進位轉換為二進位,分為整數部分和小數部分 ① 整數部分 方法:除2取餘法,即每次將整數部分除以2,餘數為該位權上的數,而商繼續除以2,餘數又為上一個位權上的數,這個步驟一直持續下去,直到商為0為止,最後讀數時候,從最後一個餘數讀起,一直到最前面的一個餘數。下面舉例: 例:將十進位的168轉換為二進位 得出結果 將十進位的168轉換為二進位,(10101000)2 分析:第一步,將168除以2,商84,餘數為0。 第二步,將商84除以2,商42餘數為0。 第三步,將商42除以2,商21餘數為0。 第四步,將商21除以2,商10餘數為1。 第五步,將商10除以2,商5餘數為0。 第六步,將商5除以2,商2餘數為1。 第七步,將商2除以2,商1餘數為0。 第八步,將商1除以2,商0餘數為1。 第九步,讀數,因為最後一位是經過多次除以2才得到的,因此它是最高位,讀數字從最後的餘數向前讀,即10101000 ② 小數部分 方法:乘2取整法,即將小數部分乘以2,然後取整數部分,剩下的小數部分繼續乘以2,然後取整數部分,剩下的小數部分又乘以2,一直取到小數部分 為零為止。如果永遠不能為零,就同十進位數的四捨五入一樣,按照要求保留多少位小數時,就根據後面一位是0還是1,取捨,如果是零,舍掉,如果是1,向入一位。換句話說就是0舍1入。讀數要從前面的整數讀到後面的整數,下面舉例: 例1:將0.125換算為二進位 得出結果:將0.125換算為二進位(0.001)2 分析:第一步,將0.125乘以2,得0.25,則整數部分為0,小數部分為0.25; 第二步, 將小數部分0.25乘以2,得0.5,則整數部分為0,小數部分為0.5; 第三步, 將小數部分0.5乘以2,得1.0,則整數部分為1,小數部分為0.0; 第四步,讀數,從第一位讀起,讀到最後一位,即為0.001。 例2,將0.45轉換為二進位(保留到小數點第四位) 大家從上面步驟可以看出,當第五次做乘法時候,得到的結果是0.4,那麼小數部分繼續乘以2,得0.8,0.8又乘以2的,到1.6這樣一直乘下去,最後不可能得到小數部分為零,因此,這個時候只好學習十進位的方法進行四捨五入了,但是二進位只有0和1兩個,於是就出現0舍1入。這個也是計算機在轉換中會產生誤差,但是由於保留位數很多,精度很高,所以可以忽略不計。 那麼,我們可以得出結果將0.45轉換為二進位約等於0.0111 上面介紹的方法是十進位轉換為為二進位的方法,需要大家注意的是: 1) 十進位轉換為二進位,需要分成整數和小數兩個部分分別轉換 2) 當轉換整數時,用的除2取餘法,而轉換小數時候,用的是乘2取整法 3) 注意他們的讀數方向 因此,我們從上面的方法,我們可以得出十進位數168.125轉換為二進位為10101000.001,或者十進位數轉換為二進位數約等於10101000.0111。 (2) 二進位轉換為十進位 不分整數和小數部分 方法:按權相加法,即將二進位每位上的數乘以權,然後相加之和即是十進位數。例 將二進位數101.101轉換為十進位數。 計算過程:
(1*2+0*2+1*2).(1*2+0*2+1*2)=5.625
得出結果:(101.101)2=(5.625)10 大家在做二進位轉換成十進位需要注意的是 1) 要知道二進位每位的權值 2) 要能求出每位的值
從最後一位開始算,依次列為第0、1、2...位 (注意是從第0位開始數的,而不是1)
第n位的數(0或1)乘以2的n次方
得到的結果相加就是答案
二、八進位與十進位的轉換 (1)十進位轉換為八進位 十進位轉換成八進位有兩種方法: 1)間接法:先將十進位轉換成二進位,然後將二進位又轉換成八進位 2)直接法:前面我們講過,八進位是由二進位衍生而來的,因此我們可以採用與十進位轉換為二進位相類似的方法,還是整數部分的轉換和小數部分的轉換,下面來具體講解一下: ①整數部分 方法:除8取餘法,即每次將整數部分除以8,餘數為該位權上的數,而商繼續除以8,餘數又為上一個位權上的數,這個步驟一直持續下去,直到商為0為止,最後讀數時候,從最後一個餘數起,一直到最前面的一個餘數。 ②小數部分 方法:乘8取整法,即將小數部分乘以8,然後取整數部分,剩下的小數部分繼續乘以8,然後取整數部分,剩下的小數部分又乘以8,一直取到小數部分為零為止。如果永遠不能為零,就同十進位數的四捨五入一樣,暫取個名字叫3舍4入。 例:將十進位數796.703125轉換為八進位數 解:先將這個數字分為整數部分796和小數部分0.703125
整數部分 796除8商99餘數4,取4
99除8商12餘數3,取3
12除8商1餘數4,取4
1除8除不開,取1
從下往上讀,整數部分為:1434
小數部分 0.703125*8=5.625 取5
0.625*8=5 取5
小數部分從上往下讀,為:55
因此,得到結果十進位796.703125轉換八進位為1434.55 上面的方法大家可以驗證一下,你可以先將十進位轉換,然後在轉換為八進位,這樣看得到的結果是否一樣 (2)八進位轉換為十進位 方法:按權相加法,即將八進位每位上的數乘以位權,然後相加之和即是十進位數。 例:①將八進位數67.35轉換為十進位
三、十六進位與十進位的轉換 十六進位與八進位有很多相似之處,大家可以參照上面八進位與十進位的轉換自己試試這兩個進位之間的轉換。 即把上面對應的8變為16進行運算。
四、 二進位與八進位之間的轉換
首先,我們需要了解一個數學關係,即2=8,2=16,而八進位和十六進位是用這關係衍生而來的,即用三位二進位表示一位八進位,用四位二進位表示一位十六進位數。 接著,記住4個數字8、4、2、1(2=8、2=4、2=2、2=1)。現在我們來練習二進位與八進位之間的轉換。 (1) 二進位轉換為八進位 方法:取三合一法,即從二進位的小數點為分界點,向左(向右)每三位取成一位,接著將這三位二進位按權相加(如果熟練了最上面我們分享的表格,我們就可以直接讀出對應的數字),得到的數就是一位八位二進位數,然後,按順序進行排列,小數點的位置不變,得到的數字就是我們所求的八進位數。如果向左(向右)取三位後,取到最高(最低)位時候,如果無法湊足三位,可以在小數點最左邊(最右邊),即整數的最高位(最低位)添0,湊足三位。例 ①將二進位數101110.101轉換為八進位 從小數點向左每隔三位讀取
二進位110對應6
二進位101對應5
所以整數部分是:56
從小數點向右每隔三位讀取
二進位101對應5
小數部分為:0.5得到結果:將101110.101轉換為八進位為56.5 ② 將二進位數1101.1轉換為八進位 這個就簡寫了,看看你能看懂了嗎?
101對應5
001對應1
100對應4得到結果:將1101.1轉換為八進位為15.4
③再來一個例子(11001.101)(二)
整數部分: 從後往前每三位一組,缺位處有0填補,然後按十進位方法進行轉化, 則有:
001=1
011=3
然後我們將結果按從下往上的順序書寫就是:31,那麼這個31就是二進位11001的八進位形式
小數部分: 從前往後每三位一組,缺位處有0填補,然後按十進位方法進行轉化, 則有:
101=5
然後我們將結果部分按從上往下的順序書寫就是:5,那麼這個5就是二進位0.625的八進位形式
所以:(11001.101)(二)=(31.5)(八)
(2) 將八進位轉換為二進位 方法:取一分三法,即將一位八進位數分解成三位二進位數,用三位二進位按權相加去湊這位八進位數(其實,熟記了表格內的內容後,可以一眼就讀出來了),小數點位置照舊。例: ① 將八進位數67.54轉換為二進位 6對應110
7對應111
5對應101
4對應100
因此,將八進位數67.54轉換為二進位數為110111.101100,即110111.1011 大家從上面這道題可以看出,計算八進位轉換為二進位 首先,將八進位按照從左到右,每位展開為三位,小數點位置不變 然後,按每位展開為2,2,2(即4、2、1)三位去做湊數,即a×2+ b×2 +c×2=該位上的數(a=1或者a=0,b=1或者b=0,c=1或者c=0),將abc排列就是該位的二進位數 接著,將每位上轉換成二進位數按順序排列 最後,就得到了八進位轉換成二進位的數字。 以上的方法就是二進位與八進位的互換,大家在做題的時候需要注意的是 1) 他們之間的互換是以一位與三位轉換,這個有別於二進位與十進位轉換 2) 大家在做添0和去0的時候要注意,是在小數點最左邊或者小數點的最右邊(即整數的最高位和小數的最低位)才能添0或者去0,否則將產生錯誤
再舉個例子吧:(31.5)(八)
整數部分:從後往前每一位按十進位轉化方式轉化為三位二進位數,缺位處用0補充 則有:
1---->1---->001
3---->101
然後我們將結果按從下往上的順序書寫就是:11001,那麼這個11001就是八進位31的二進位形式
說明,關於十進位的轉化方式我這裡就不再說了,上一篇文章我已經講解了!
小數部分:從前往後每一位按十進位轉化方式轉化為三位二進位數,缺位處用0補充 則有:
5---->101
然後我們將結果按從下往上的順序書寫就是:101,那麼這個101就是八進位5的二進位形式
所以:(31.5)(八)=(11001.101)(二)
五、 二進位與十六進位的轉換 方法:與二進位與八進位轉換相似,只不過是一位(十六)與四位(二進位)的轉換,下面具體講解 (1) 二進位轉換為十六進位 方法:取四合一法,即從二進位的小數點為分界點,向左(向右)每四位取成一位,接著將這四位二進位按權相加,得到的數就是一位十六位二進位數,然後,按順序進行排列,小數點的位置不變,得到的數字就是我們所求的十六進位數。如果向左(向右)取四位後,取到最高(最低)位時候,如果無法湊足四位,可以在小數點最左邊(最右邊),即整數的最高位(最低位)添0,湊足四位。 ①例:將二進位11101001.1011轉換為十六進位 從小數點開始向左取四位讀數
1001對應9
1110對應16
整數部分為169,注意了16在16進位中寫為E,所以是E9(看上面的表就懂了)
從小數點開始向右取四位讀數
1011對應11,注意了11在16進位中寫為B
得到結果:將二進位11101001.1011轉換為十六進位為E9.B ② 例:將101011.101轉換為十六進位 因此得到結果:將二進位101011.101轉換為十六進位為2B.A (2)將十六進位轉換為二進位 方法:取一分四法,即將一位十六進位數分解成四位二進位數,用四位二進位按權相加去湊這位十六進位數,小數點位置照舊。 ①將十六進位6E.2轉換為二進位數 因此得到結果:將十六進位6E.2轉換為二進位為01101110.0010即110110.001
再舉例:
(19.A)(十六)
整數部分:從後往前每位按十進位轉換成四位二進位數,缺位處用0補充 則有:
9---->1001
1---->0001(相當於1)
六、八進位與十六進位的轉換 方法:一般不能互相直接轉換,一般是將八進位(或十六進位)轉換為二進位,然後再將二進位轉換為十六進位(或八進位),小數點位置不變。那麼相應的轉換請參照上面二進位與八進位的轉換和二進位與十六進位的轉換。 如果我們能夠熟練記住表格的內容,可以很快捷的進行計算。 要注意,十進位轉換為其餘三種進位之間,要分為整數部分和小數部分,最後就是小數點的位置。熟能生巧,希望大家多多練習哦。我在我的博客公式庫網上也發表了這篇文章,並且在下面附上了轉換工具,想要練習的朋友,可以在做完後,用工具直接進行驗證哦。