進製間的相互轉化

2021-09-06 19:56:21 字數 3676 閱讀 2666

原文:

進製間的相互轉化

進製間的轉換如下圖所示:

由上圖可知,進製間共有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...