一文了解進制之間的原理和轉換

生活中咱們使用的數字都是十進制的,而二進制是機器可以識別的最直接的語言。可是二進制又太大,記錄起來很是的不方便。因此一般會將二進制轉化爲八進制或者十六進制。python

平常生活中咱們所說的數字 (十進制)在0~9之間,同理 二進制的範圍是01,八進制的範圍07,十六進制的範圍0~15。 那問題來了,當超過9以後,十六進制該如何表示呢? 答案是用af,表示對應的1015code

進制的表達

在Python中該如何表示每一種進制呢?get

  • 默認輸入的數字爲十進制
  • 以0b開頭的數字表示二進制
  • 以0o開頭的數字表示八進制
  • 以0x開頭的數字表示十六進制
# 普通的十進制
a = 12
print(a) # 12

# 0b表示二進制
b = 0b100100 
print(b) # 36

# 0o表示八進制
c = 0o56
print(c) # 46

# 0x表示十六進制
d = 0x2a1
print(d) # 673

進制之間的轉換

一、十進制轉二進制

將十進制數除2取餘數,直到商爲0時。class

以12爲例,進階

12 / 2 = 6  餘 0 

6  /  2 = 3  餘 0

3  /  2 = 1  餘 1

1  /  2 = 0  餘 1

從上到下取餘數,所以,12 對應的 二進制 爲 :1100二進制

二、二進制轉十進制

把二進階按權展開,相加便可。如二進制位:1100,按照下面的格式展開im

0	   0	  1		   1

1\*2^0	1\*2^1	1\*2^2	1\*2^3

0 * 1*2^0 + 0 * 1*2^1 + 1 * 1*2^2 + 1 * 1*2^3 = 12語言

三、二進制與八進制轉換

將2進制從右到左的順序按照3位拆分,不足時 補0。 例如二進制:1100可拆分紅生活

001 100 而後按權展開組合起來便可。co

即:

0*2^2 + 0 * 2 ^ 1 + 1 * 2 ^ 0 = 1

1*2^2 + 0 * 2 ^ 1 + 0 * 2 ^ 0 = 4

所以對應的八進制爲 14。

四、八進制轉二進制

經過對八進制除2取餘數,

1的二進制爲1 ,不夠3位補0,即001

4的二進制爲100

所以八進制14轉二進制的結果 爲:001100

事實上,平常中用到的主要就是二進制和十進制的轉換,其餘瞭解一下就能夠了。

在Python中,已經講各類進制的轉換進行了封裝,直接調用便可。

a = 12
print(bin(a)) # 0b1100   十進制轉二進制
print(oct(a)) # 0o14  十進制轉八進制
print(hex(a)) # 0xc   十進制轉十六進制

# 二進制轉十進制
print(int('0b1100', 2))

# 八進制轉十進制
print(int('0o14', 8))

# 十六進制轉十進制
print(int('0xc', 16))

文末福利,史上最全Python資料彙總(長期更新)。隔壁小孩都饞哭了 --- 點擊領取