Python進制轉換

進制轉換:

進制轉換是人們利用符號來計數的方法。
進制轉換由一組數碼符號和兩個基本因素“基數”與“位權”構成。
基數是指,進位計數制中所採用的數碼(數制中用來表示“量”的符號)的個數。
位權是指,進位制中每一固定位置對應的單位值。

簡單轉換理念:

把二進制三位一組分開就是八進制, 四位一組就是十六進制

二進制與十進制:

(1)二進制轉十進制:“按權展開求和”

(1011)2=1x2**3 + 0x2**2 + 1x2**1 + 1x2**0=(11)10

  規律:個位上的數字的次數是0,十位上的數字的次數是1,......,依次遞增,而十分位的數字的次數是-1,百分位上數字的次數是-2,......,依次遞減。
  注意:不是任何一個十進制小數都能轉換成有限位的二進制數。

(2)十進制轉二進制:“除以2取餘,逆序排列”(除二取餘法)

【例】:(89)10=(1011001)2
             89÷2 ……1
             44÷2 ……0
             22÷2 ……0
             11÷2 ……1
             5÷2 ……1
             2÷2 ……0
             1

十進制小數轉二進制數:“乘以2取整,順序排列”(乘2取整法)

【例】:(0.625)10= (0.101)2
               0.625X2=1.25 ……1
               0.25X2=0.50 ……0
               0.50 X2=1.00 ……1  

二進制與八進制:

二進制數轉換成八進制數:從小數點開始,整數部分向左、小數部分向右,每3位爲一組用一位八進制數的數字表示,不足3位的要用“0”補足3位,就得到一個八進制數。
八進制數轉換成二進制數:把每一個八進制數轉換成3位的二進制數,就得到一個二進制數。

八進制數字與十進制數字對應關係如下:
        000 -> 0 | 004-> 4 | 010=8
        001 -> 1 |005 -> 5 | 011=9
        002 -> 2 |006 -> 6 | 012=10
        003 -> 3 |007 -> 7 | 013=11
    【例】:將八進制的37.416轉換成二進制數:
        3 7 . 4 1 6
        011 111 .100 001 110
        即:(37.416)8 =(11111.10000111)2
    【例】:將二進制的10110.0011 轉換成八進制:
        0 1 0 1 1 0 . 0 0 1 1 0 0
        2 6 . 1 4
        即:(10110.0011)2 = (26.14)8

二進制與十六進制

二進制數轉換成十六進制數:二進制數轉換成十六進制數時,只要從小數點位置開始,向左或向右每四位二進制劃分一組(不足四位數可補0),然後寫出每一組二進制數所對應的十六進制數碼即可。
十六進制數轉換成二進制數:把每一個十六進制數轉換成4位的二進制數,就得到一個二進制數。        
十六進制數字與二進制數字的對應關係如下:
0000 -> 0 | 0100 -> 4 | 1000 -> 8 | 1100 -> C
0001 -> 1 | 0101 -> 5 | 1001 -> 9 | 1101 -> D
0010 -> 2 | 0110 -> 6 | 1010 -> A | 1110 -> E
0011 -> 3 | 0111 -> 7 | 1011 -> B | 1111 -> F
【例】:將十六進制數5DF.9 轉換成二進制:
        5 D F . 9
        0101 1101 1111 .1001
        即:(5DF.9)16 =(10111011111.1001)2{十六進制怎麼會有小數點}
【例】:將二進制數1100001.111 轉換成十六進制:
         0110 0001 . 1110
         6 1 . E
         即:(1100001.111)2 =(61.E)16

Python中進製表示方式:

2進制是以0b開頭的: 例如: 0b11 則表示十進制的3
8進制是以0開頭的: 例如: 011則表示十進制的9 
16進制是以0x開頭的: 例如: 0x11則表示十進制的17

python中進制轉換:

   #10進制轉爲2進制

>> bin(10)
'0b1010'

#2進制轉爲10進制

>> int("1001",2)
9

#10進制轉爲16進制

>> hex(10)
'0xa'

#16進制到10進制

>> int("ff", 16)
255
>> int('0xab', 16)
171

#10進制轉爲8進制 兩種方式

 >>> print ("%o" % 10)
 12
 >>> oct(8)
 '010'  

#16進制到2進制

>> bin(0xa)
'0b1010'
>>

#2進制到16進制

>> hex(0b1001)
'0x9'

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章