原文:
進製間的相互轉化
進製間的轉換如下圖所示:
由上圖可知,進製間共有12種轉換。下面將逐一介紹這12種轉換方法
(1)二進位制轉化為八進位制
原理:<1>1位八進位制數可以用3位二進位制數碼表示
<2>以小數點為邊界:若小數點左側(即整數部分)不是3的整數倍,則在最左側補零,對小數點右側(即小數部分)應在最右側補零
例: 將(10.101)2 轉化為八進位制。
解:(1)
將二進位制補足3位
即:(010.101)2
(2)按權值轉換
(0×22 + 1×21 +0×20).(1×22 + 0×21 +1×20)=2.5故 (010.101)2 =(2.5)10
注意:從最低位開始把3位劃分為一組。
(2)二進位制轉化為十進位制
例: 將(1101.0101)2轉化為十進位制。
解:23+ 22+20+2-2+ 2-4=13.3125
故 (1101.0101)2=(13.3125)10
解題技巧:記住對應的位權
2021
2223
2425
2627
2829
21021112
481632
64128
256512
1024
2048
(3)二進位制轉化為十六進製制
原理:<1>1位十六進製制數可以用4位二進位制數碼表示
<2>以小數點為邊界:若小數點左側(即整數部分)不是4的整數倍,則在最左側補零,對小數點右側(即小數部分)應在最右側補零
例: 將(10.101)2轉化為十六進製制。
解:(1)將二進位制補足3位
得 (0010.1010)2
(2)按權值轉換
21.(23+21)=2.a
故 (10.1010)2 =(2.a)16
注意:從最低位開始把3位劃分為一組。
(4)八進位制轉化為二進位制
原理:將乙個八進位制數分成三個二進位制數,用三位二進位制按權相加,最後得到二進位制,小數點不變。
例:將(376.01)8轉化為二進位制。
分解圖如下:
故 (376.01)8=(11111110.000001)2
(5)八進位制轉化為十進位制
例:將(7.44)8 轉化為十進位制
解:(7.44)8 =7×80+4×8-1+4×8-2=(7.5625)10
注意:八進位制基本符號的取值範圍,即:0~7.
(6)八進位制轉化為十六進製制
這裡有兩種解法:
解法一:將八進位制轉化為二進位制,再將二進位制轉化為十六進製制
解法二:將八進位制轉化為十進位制,再將十進位制轉化為十六進製制
例: 將(67.54)8 轉化為十六進製制。
解法一<1> 將八進位制轉化為二進位制
(67.54)8=(110111.101100)2
<2>將二進位制轉化為十六進製制
故 (110111.101100)2=(37.b)16
解法二
<1>將八進位制轉化為十進位制
(67.54)8=(55.6875)10
<2>將十進位制轉化為十六進製制
故 (55.6875)10=(37.b)16
(7)十進位制轉化為二進位制
整數部分---原理:<1>用2除十進位制的整數部分,取餘數最低位數值
<2>再用2除商,取餘數最低位數值
<3>重複<2>直到商為0.
例: 將37轉化為二進位制。
解:如下分解
得 (37)10=(100101)2.
注意:餘數部分是由低到高,寫出的二進位制是由高到低。
餘數部分---原理:<1>用2乘十進位制小數部分,取乘積整數得到最高位
<2>再用剩餘小數部分乘2,取乘積整數得到次高位
<3>重複直到乘積為0或得到的小數字滿足要求
例: 將0.43轉化為二進位制小數。(假設要求小數點後五位)
解:如下圖所示
故 轉化後的二進位制小數為(0.01101)2
(8)十進位制轉化為八進位制
例: 將(1109)10轉化為八進位制。
解:如下**
故 (1109)10=(2125)8
下面我們來看看轉化為八進位制小數的情況
例如:(0.385)10轉化為八進位制小數。
解: 0.385x8
3 0.08x8
0 0.64x8
5 0.12x8
結果:(0.385)10=(0.305)8
(9)十進位制轉化為十六進製制
例:將(55.6875)10轉化為十六進製制。
解:<1>先求小數部分
得 (55)10=(37)16
<2>求小數部分
0.6875x16
11 0
得 (0.6875)10=(0.b)16
故結果為:(55.6875)10=(37.b)
(10)將十六進製制轉化為二進位制
原理:將一位十六進製制數分解成四位二進位制數,再用四位二進位制按權相加,最後得到十六進製制數,小數點位置不變。
例:將(6e.2)16轉化為二進位制。
解:**如下
故結果為:(6e.2)16=(01101110.001)2
(11)十六進製制轉化為八進位制
解題思路:先將十六進製制轉化為二進位制,然後再將二進位制轉化為八進位制。
例:將(8e.09)16轉化為八進位制。
解:<1>將十六進製制轉化為二進位制,得
(8e.09)16=(10001110.00001001)2
<2>將二進位制轉化為八進位制,得
(10001110.00001001)2=(216.022)8
所以轉化的最終結果為
(8e.09)16=(216.022)8
(12)十六進製制轉化為十進位制
例:將(1a.08)16 轉化為十進位制。
解:(1a.08)16=1x16+10x160+8x16-2=(26.03125)10
故結果為:(1a.08)16=(26.03125)10.
到這裡有關進製間的相互轉換都已經完成,當然在分析解題思路和舉例的過程中可能會有一些失誤。如果有不足或者需要擴充套件的地方還望廣大朋友多多指教。同時也希望能對大多數朋友有所幫助。
進製間的相互轉化總結 例題
進製轉換 1.十六進製制與二進位制相互轉化 十六進製制的每一位佔二進位制中的四位,因此需要先定義十六進製制從0 f的二進位制值,即 string a 16 下標即十六進製制數,再將每乙個對應的二進位制字串拼起來就可以了。如下例 2.八進位制與二進位制相互轉化 二進位制中的每三位對應八進位制中的一位,...
進製的相互轉化
我們常用的進製包括 二進位制 八進位制 十進位制與十六進製制,它們之間區別在於數運算時是逢幾進一位。十進位制轉二進位制 方法為 十進位制數除2取餘法,即十進位制數除2,餘數為權位上的數,得到的商值繼續除2,依此步驟繼續向下運算直到商為0為止。二進位制轉十進位制 方法為 把二進位制數按權展開 相加即得...
進製之間的相互轉化
由乙個問題想到的!這個問題是 在windows計算器裡,用programmer方式,選擇dword即32位編碼,然後切換到16進製制,輸入80800006,再轉化成十進位制,會得到乙個負數 2139095034 在c 裡面80800006是乙個uint變數,如何把它變成乙個int的負數?答案 uin...