PHP基礎教程

來源:互聯網
上載者:User

標籤:兄弟連

  


 

兄弟連PHP培訓(www.lampbrother.net)詳解:二進位、八進位、十進位、十六進位相互轉換 一、十進位與二進位之間的轉換

  (1) 十進位轉換為二進位,分為整數部分和小數部分

  ① 整數部分

  方法:除2取餘,逆序排列,即每次將整數部分除以2,餘數為該位權上的數,而商繼續除以2,餘數又為上一個位權上的數,這個步驟一直持續下去,直到商為0為止,最後讀數時候,從最後一個餘數讀起,一直到最前面的一個餘數。下面舉例:

  例:將十進位的168轉換為二進位

  得出結果 將十進位的168轉換為二進位,(10101000)

  第一步,將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,然後取整數部分,剩下的小數部分又乘以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。

  (3) 二進位轉換為十進位 不分整數和小數部分

  方法:按權相加法,即將二進位每位上的數乘以權,然後相加之和即是十進位數。例

  將位元101.101轉換為十進位數。

  得出結果:(101.101)2=(5.625)10

  大家在做二進位轉換成十進位需要注意的是

  1) 要知道二進位每位的權值

  2) 要能求出每位的值

  二、 二進位與八進位之間的轉換

  首先,我們需要瞭解一個數學關係,即23=8,24=16,而八進位和十六進位是用這

  關係衍生而來的,即用三位二進位表示一位八進位,用四位二進位表示一位十六進位數。

  接著,記住4個數字8、4、2、1(23=8、22=4、21=2、20=1)。現在我們來練習二進位與八進位之間的轉換。

  (1) 二進位轉換為八進位

  方法:取三合一法,即從二進位的小數點為分界點,向左(向右)每三位取成一位,接著將這三位二進位按權相加,得到的數就是一位八位位元,然後,按順序進行排列,小數點的位置不變,得到的數字就是我們所求的八位元。如果向左(向右)取三位後,取到最高(最低)位時候,如果無法湊足三位,可以在小數點最左邊(最右邊),即整數的最高位(最低位)添0,湊足三位。例

  ①將位元101110.101轉換為八進位

  得到結果:將101110.101轉換為八進位為56.5

  ② 將位元1101.1轉換為八進位

  得到結果:將1101.1轉換為八進位為15.4

  (2) 將八進位轉換為二進位

  方法:取一分三法,即將一位八位元分解成三位位元,用三位二進位按權相加去湊這位八位元,小數點位置照舊。例:

  ① 將八位元67.54轉換為二進位

  因此,將八位元67.54轉換為位元為110111.101100,即110111.1011

  大家從上面這道題可以看出,計算八進位轉換為二進位

  首先,將八進位按照從左至右,每位展開為三位,小數點位置不變

  然後,按每位展開為22,21,20(即4、2、1)三位去做湊數,即a×22+b×21 +c×20=該位上的數(a=1或者a=0,b=1或者b=0,c=1或者c=0),將abc排列就是該位的位元

  接著,將每位上轉換成位元按順序排列

  最後,就得到了八進位轉換成二進位的數字。

  以上的方法就是二進位與八進位的互換,大家在做題的時候需要注意的是

  1) 他們之間的互換是以一位與三位轉換,這個有別於二進位與十進位轉換

  2) 大家在做添0和去0的時候要注意,是在小數點最左邊或者小數點的最右邊(即整數的最高位和小數的最低位)才能添0或者去0,否則將產生錯誤

  三、 二進位與十六進位的轉換

  方法:與二進位與八進位轉換相似,只不過是一位(十六)與四位(二進位)的轉換,下面具體講解

  (1) 二進位轉換為十六進位

  方法:取四合一法,即從二進位的小數點為分界點,向左(向右)每四位取成一位,接著將這四位二進位按權相加,得到的數就是一位十六位位元,然後,按順序進行排列,小數點的位置不變,得到的數字就是我們所求的十六進位數。如果向左(向右)取四位後,取到最高(最低)位時候,如果無法湊足四位,可以在小數點最左邊(最右邊),即整數的最高位(最低位)添0,湊足四位。

  ①例:將二進位11101001.1011轉換為十六進位

  得到結果:將二進位11101001.1011轉換為十六進位為E9.B

  ② 例:將101011.101轉換為十六進位

  因此得到結果:將二進位101011.101轉換為十六進位為2B.A

  (2)將十六進位轉換為二進位

  方法:取一分四法,即將一位十六進位數分解成四位位元,用四位二進位按權相加去湊這位十六進位數,小數點位置照舊。

  ①將十六進位6E.2轉換為位元

  因此得到結果:將十六進位6E.2轉換為二進位為01101110.0010即110110.001

  四、八進位與十六進位的轉換

  方法:一般不能互相直接轉換,一般是將八進位(或十六進位)轉換為二進位,然後再將二進位轉換為十六進位(或八進位),小數點位置不變。那麼相應的轉換請參照上面二進位與八進位的轉換和二進位與十六進位的轉

  五、八進位與十進位的轉換

  (1)八進位轉換為十進位

  方法:按權相加法,即將八進位每位上的數乘以位權,然後相加之和即是十進位數。

  例:①將八位元67.35轉換為十進位

  (2)十進位轉換為八進位

  十進位轉換成八進位有兩種方法:

  1)間接法:先將十進位轉換成二進位,然後將二進位又轉換成八進位

  2)直接法:前面我們講過,八進位是由二進位衍生而來的,因此我們可以採用與十進位轉換為二進位相類似的方法,還是整數部分的轉換和小數部分的轉換,下面來具體講解一下:

  ①整數部分

  方法:除8取餘法,即每次將整數部分除以8,餘數為該位權上的數,而商繼續除以8,餘數又為上一個位權上的數,這個步驟一直持續下去,直到商為0為止,最後讀數時候,從最後一個餘數起,一直到最前面的一個餘數。

  ②小數部分

  方法:乘8取整法,即將小數部分乘以8,然後取整數部分,剩下的小數部分繼續乘以8,然後取整數部分,剩下的小數部分又乘以8,一直取到小數部分為零為止。如果永遠不能為零,就同十進位數的四捨五入一樣,暫取個名字叫3舍4入。

  例:將十進位數796.703125轉換為八位元

  解:先將這個數字分為整數部分796和小數部分0.703125

  整數部分

  小數部分

  因此,得到結果十進位796.703125轉換八進位為1434.55

  上面的方法大家可以驗證一下,你可以先將十進位轉換,然後在轉換為八進位,這樣看得到的結果是否一樣

  六、十六進位與十進位的轉換

  十六進位與八進位有很多相似之處,大家可以參照上面八進位與十進位的轉換自己試試這兩個進位之間的轉換。

 


PHP基礎教程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.