Python基礎語法系列4-進制

進制轉換

在計算機進行數據交換時,常常會有一個進制轉換的過程,我們知道計算機只認0 和 1.在內存系統中,基本基於二進制進行運算的,但是有時候數據過於龐大,爲了方便存儲管理,計算機會使用十六進制存儲數據,但是怎麼實現數據轉換呢?

我們人類由十根手指頭,所以自然就使用十進制啦,每當我們數數字到10之後,於是就重0 開始繼續數,所以逢十進一就這麼來了。對於其它進制呢,也是同樣的,比如最常見的二進制,也就是逢二進一,依次類推。

1 各種進制介紹

Python中的整數支持十進制、二進制、八進制和十六進制四種不同的表示方式,在轉換之前,我們先了解以下各種進制

1.1.1 十進制
  • 基數: 0 ~ 9 (一個十進制數上的每一位都是0到9中的一個)
  • 進位: 逢10 進1
  • 位權: 10的冪次方, 例如: 十進制數123中的1代表1乘以10的2次方,2代表2乘以10的1次方,3代表3乘以10的0次方
  • 程序中的寫法: 直接寫, 例如: 100, 23, 67, 1298
1.1.2 二進制
  • 基數: 0和1 (一個二進制數上的每一位的值只能是0和1)
  • 進位: 逢2進1
  • 位權: 2的冪次方, 例如: 二進制數110中的第一個1代表1乘以2的2次方,第二個1代表1乘以2的1次方,0代表0乘以2的0次方
  • 程序中的寫法:加前綴0b/0B, 例如: 0b1101, 0B1011
1.1.3 八進制
  • 基數: 0 ~ 7 (一個八進制數上的每一位都是0~7中的一個)
  • 進位:逢8進1
  • 位權:8的冪次方,例如:八進制數56中的5代表5乘以8的1次方,6代表6乘以8的0次方
  • 程序中的寫法:加前綴0o/0O, 例如: 0o23, 0O172
1.1.4 十六進制
  • 基數:09,af/A~F (一個十六進制數上的每一位是數字09或者字母af/A~F)
  • 進位:逢16進1
  • 位權:16的冪次方,例如:十六進制數a1中的a代表10乘以16的1次方,6代表6乘以16的0次方
  • 程序中的寫法:加前綴0x/0X,例如:0xa6,0x12f

2 進制之間的轉換

Python提供了三個函數用於進制的轉換,分別是bin()、oct()、hex()用於二進制、八進制和十六進制的轉換,其用法如下:

  1. 轉十進制

    # 1. 其他進制轉十進制: 使用print函數打印其他進制的數,打印結果就是十進制
    print(0b11011)	# 查看二進制數11011對應的十進制
    print(0o56)		# 查看八進制數56對應的十進制
    print(0x1fa)	# 查看十六進制數1fa的十進制
    

    結果:

    27
    46
    506
    
  2. 轉二進制

    # 2. 其他進制轉二進制: 獲取函數bin()的結果
    print(bin(100))		# 查看十進制數100對應的二進制
    print(bin(0o56))	# 查看八進制數56對應的二進制
    print(bin(0x1fa))	# 查看十六進制數1fa對應的二進制
    

    結果:

    0b1100100
    0b101110
    0b111111010
    
  3. 轉八進制

    print(oct(100))		# 查看十進制數100對應的八進制
    print(oct(0b11011))	# 查看二進制數11011對應的八進制
    print(oct(0x1fa))	# 查看十六進制數1fa對應的八進制
    

    結果:

    0o144
    0o33
    0o772
    
  4. 轉十六進制

    print(hex(100))		# 查看十進制數100對應的十六進制
    print(hex(0b11011))	# 查看二進制數11011對應的十六進制
    print(hex(0o56))	# 查看八進制數56對應的十六進制
    

    結果:

    0x64
    0x1b
    0x2e
    

不同的進制只是數字的不同的表示方式,使用的時候並無區別,在程序中,十進制數能做的,其他進制都可以,示例如下:

print(10 + 20)
print(0b1010 + 0b10100)
print(0o12 + 0o24)
print(0xa + 0x14)

結果:

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