Python進制轉換

進制轉換:先介紹用傳統數學方法,再介紹用python內置方法

二進制轉十進制:
1101 轉爲十進制 1*2^(4-1)+1*2^(3-1)+0*2^(2-1)+1*2^(1-1) 即各個位拆開,乘以2的(位數-1)次方,結果爲13
>>> int('1101',2)  
13
>>> int('0o226',8) #00226 0:阿拉伯數字零 o:小寫英文字母 o 226:八進制數
150
>>> int('0x96',16)
150

同理可得:把八進制、十六進制數按權展開、相加即得十進制數。python

十進制轉二進制:
好比13 用13除以2,獲得的商再除以2 直到除到1,而後記錄每次獲得的餘數, 從後往前讀,即爲 1101
同理可得,十進制轉八進制或者十六進制按照除8或者16取餘,直到商爲0爲止,再從最後一位讀到第一位
>>> bin(13)
'0b1101'

 

 

八進制轉爲二進制:
好比八進制數 (37)8
拆開 3   7     
3用二進制表示爲 11                           
7用二進制表示爲 111                       
合起來 即爲 11 111
同理 十六進制轉二進制
>>> bin(0o37)    #0o37   0:阿拉伯數字0   o:八進制表示
'0b11111'
>>> bin(0x33)
'0b110011'
>>> 

 

二進制轉八進制:
二進制從右邊數,3位3位爲一組,轉爲十進制好比:
10 110 011 111
2     6    3      7    對應八進制就是爲 (2637)8
同理十六進制,不過此時二進制應該是 從右往左邊數,4位4位爲一組
>>> oct(0b10110011111)
'0o2637'
>>> hex(0b10110011111)
'0x59f'
>>> 

101 1001 1111    轉爲十六進制對應以下:spa

5         9     f (15)3d

 

八進制與十六進制之間的轉換有兩種方法:code

第一種:他們之間的轉換能夠先轉成二進制而後再相互轉換。blog

第二種:他們之間的轉換能夠先轉成十進制而後再相互轉換。get

>>> oct(0x37)
'0o67'
>>> hex(0o67)
'0x37'

 

 

 

 

權值和第幾位相關,n進制第i位的權值是n的( i-1)次方。
例如:
十進制13579,常說的百位是5,其背後的理由是10^(3-1)=100
十六進制1A2B,B所處位的權值是16^(1-1)=1(即個位),1所處位的權值是16^(4-1)=4096
 
對於多位數,處在某一位上的「l」所表示的數值的大小,稱爲該位的位權。例如十進制第2位的位權爲10,第3位的位權爲100;而二進制第2位的位權爲2,第3位的位權爲4,對於 N進制數,整數部分第 i位的位權爲N^( i-1),而小數部分第j位的位權爲N^-j。
相關文章
相關標籤/搜索