生活中我們使用的數字都是十進制的,而二進制是機器能夠識別的最直接的語言。但是二進制又太大,記錄起來非常的不方便。所以通常會將二進制轉化為八進制或者十六進制。
日常生活中我們所說的數字 (十進制)在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))