1. 程式人生 > >1.不同進位制數之間的相互轉換

1.不同進位制數之間的相互轉換

我們比較常用的數制有十進位制、二進位制、八進位制和十六進位制。二進位制就是逢二進一,每位都是小於二的數,其他進位制類推。計算機儲存資料使用的是二進位制編碼。

對於一個R進位制的數X來說,其值可以通過下面的公式算出來:,前面是整數部分,後面是小數部分,m,n為正整數,表示第i位上的數字乘以進位制數的i次方。比如二進位制數(11.01)2=1×21+1×20+0×2-1+1×2-2=3.25。當R進位制轉換到十進位制時,就這樣轉換。

1.十進位制轉換為R進位制

可以將十進位制數連續除以R,其每個餘數就是R進位制數各個數位上的數字,最後的餘數是最高位。比如將68轉換成二進位制數,用除2取餘法:

 2∟68                      餘數

 2∟34 …………………0       低位

 2∟17 …………………0

 2∟8   …………………1

 2∟4   …………………0

 2∟2   …………………0

 2∟1   …………………0

  0       …………………1       高位

       結果就是6810 =10001002,將68轉換為八進位制數就用除8取餘法。

2. 十進位制小數轉換成R進位制小數

整數部分仍按上述方法轉換,小數部分則乘以R,然後將結果的整數位取出作為轉換最終結果的一位,再用去掉整數位的小數再乘以R,之後迴圈這樣執行,直到小數部分為0或者達到所要求的精度為止,取出的這些整數位第一位為最高位。例如,將十進位制小數0.3125轉換成二進位制小數: 

        0.3125×2 =0.625       取出0,為最高位

        0.625×2 =1.25           取出1,剩下的小數為0.25

        0.25×2 =0.5               取出0

        0.5×2 =1.0                 取出1,小數位為0,不再繼續

       結果就是0.312510 =0.01012 。所以將十進位制數68.3125轉換成二進位制數就是1000100.0101。

3.二進位制、八進位制、十六進位制之間的相互轉換

每位八進位制數相當於三位二進位制數,每位十六進位制數相當於四位二進位制數,如下:

(1000100)2=(1000 100)2

=(104)8

(1000100)2=(1000100)2=(44)16

上面這個等式反過來當然也成立,就是八進位制十六進位制轉換為二進位制反過來計算就可以了。

計算機資料的儲存單位,常用的單位有“位”,“位元組”,“字”

位元組:由八位二進位制資料組成。位元組是資料儲存中最常用的基本單位。我們常說記憶體有2G,這裡的單位就是位元組。1K等於1024位元組,1M等於1024K,1G等於1024M。

字:位的組合,作為一個獨立的資訊單位處理。取決於機器的型別、字長及使用者的要求。常用的固定字長有8位、16位、32位等。

機器字長:討論資訊單位時,有個與機器硬體指標有關的單位就是機器字長,一般指參加運算的暫存器所含有的二進位制數的位數,它代表了機器的精度,如32位、64位等。就是我們常說的32位機器還是64位機器。