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
发布了40 篇原创文章 · 获赞 11 · 访问量 1464

猜你喜欢

转载自blog.csdn.net/yuting209/article/details/105166925
今日推荐