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

初一丶發表於2020-09-13

生活中我們使用的數字都是十進位制的,而二進位制是機器能夠識別的最直接的語言。但是二進位制又太大,記錄起來非常的不方便。所以通常會將二進位制轉化為八進位制或者十六進位制。

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

進位制的表達

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

  • 預設輸入的數字為十進位制
  • 以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

進位制之間的轉換

1、十進位制轉二進位制

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

以12為例,

12 / 2 = 6  餘 0 

6  /  2 = 3  餘 0

3  /  2 = 1  餘 1

1  /  2 = 0  餘 1

從上到下取餘數,因此,12 對應的 二進位制 為 :1100

2、二進位制轉十進位制

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

   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

3、二進位制與八進位制轉換

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

001 100 然後按權展開組合起來即可。

即:

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

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

因此對應的八進位制為 14。

4、八進位制轉二進位制

通過對八進位制除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資料彙總(長期更新)。隔壁小孩都饞哭了 --- 點選領取

相關文章