Python学习笔记17_进制表示及转换
1、进制表示
- Python 中默认是十进制,二进制、八进制、十六进制在 Python 中的表示:
a = 0b10101 # 以0b开头表示二进制 只能是0和1
b = 0o157 # 以0o开头表示八进制 只能是0~7
c = 34 # 默认是十进制
d = 0x15af # 以0x开头表示十六进制 10~15用a~f表示
2、进制转换
2.1、十进制转二进制
- 整数部分,除基取余,逆序排列;小数部分,乘基取整,顺序排列
2.2、二进制转十进制
- 二进制数1101.01转化成十进制:
1101.01 ( 2 ) = 1 × 2 0 + 0 × 2 1 + 1 × 2 2 + 1 × 2 3 + 0 × 2 − 1 + 1 × 2 − 2 = 13.25 ( 10 ) 1101.01(2)=1 \times 2 ^0+0 \times 2^1+1 \times 2 ^2+1 \times 2 ^3+0 \times 2 ^{-1}+1 \times 2 ^{-2}=13.25(10) 1101.01(2)=1×20+0×21+1×22+1×23+0×2−1+1×2−2=13.25(10)
- 通用公式:
a b c d . e f g = d × 2 0 + c × 2 1 + b × 2 2 + a × 2 3 + e × 2 − 1 + f × 2 − 2 + g × 2 − 3 abcd.efg=d \times 2^0+c \times 2^1+b \times 2^2+a \times 2^3+e \times 2^{-1}+f \times 2^{-2}+g \times 2^{-3} abcd.efg=d×20+c×21+b×22+a×23+e×2−1+f×2−2+g×2−3
- 十进制和其他进制转换同理
2.3、二进制转八进制
- 二进制的小数点为分界点,向左(向右)每三位分成一组,接着将这三位二进制按权相加,得到的数就是一位八位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。
- 如果向左(向右)取三位后,取到最高(最低)位时候,如果无法凑足三位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位。
2.4、二进制转十六进制
- 二进制的小数点为分界点,向左(向右)每四位取成一位,接着将这四位二进制按权相加,得到的数就是一位十六位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的十六进制数。
- 如果向左(向右)取四位后,取到最高(最低)位时候,如果无法凑足四位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足四位。
2.5、使用内置函数进行进制转换
a = 12
# 使用bin内置函数可以将数字转换成二进制
print(bin(a)) # 0b1100
# 使用oct内置函数可以将数字转换成八进制
print(oct(a)) # 0o14
# 使用hex内置函数可以将数字转换成十六进制
print(hex(12)) # 0xc