tips:
Python中能够识别二进制、八进制、十进制及十六进制,Python整数显示进制为十进制,其他进制作为补充。
例如12在Python中各进制下的表示:
进制 | 表示 |
---|---|
二进制 | 0b1100 |
八进制 | 0o14 |
十进制 | 12 |
十六进制 | 0xc |
二进制是计算技术中广泛采用的一种数制。二进制是一种以2为基数的计数法,采用0和1两个数,逢二进一。
二进制转八进制
二进制转八进制,二进制3位为一个单位按照二进制转十进制的方式转换,依次类推然后倒序拼接即可。
#----- 手动转换--------#
# 取3位为一个单位,不够的补零
0b1100 -> 0b001100
# 从右向左取第一组3位,作为八进制第0位数字
100 -> 1*2**2 + 0*2**1 + 0*2**0 = 4
# 从右向左取第二组3位(不够3位补零),作为八进制第1位数字
001 -> 0*2**2 + 0*2**1 + 1*2**0 = 1
# 最后八进制数
0o14
#----- Python函数转换--------#
# 方法1,oct函数
>>> oct(0b1100)
'0o14'
# 方法2,先转为十进制,然后转为八进制
>>> oct(int("0b1100",2))
'0o14'
>>> oct(int(0b1100))
'0o14'
二进制转十进制
二进制数第0位的权值是2的0次方,第1位的权值是2的1次方,依次类推,权值乘以相应系数并相加即可得到十进制数。
#----- 手动转换--------#
0b1100 -> 1*2**3 + 1*2**2 + 0*2**1 + 0*2**0 = 12
#----- Python函数转换--------#
# 方法1,字符型整数转十进制,指定解析进制类型
>>> int('0b1100',2)
12
# 方法2,自动识别输入进制类型,并转为十进制
>>> int(0b1100)
12
二进制转十六进制
二进制转十六进制,二进制4位为一个单位按照二进制转十进制的方式转换,依次类推然后倒序拼接即可。由于十六进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15。字母不区分大小写。
#----- 手动转换--------#
# 取4位为一个单位,不够的补零
0b1100 -> 0b1100
# 从右向左取第一组4位,作为十六进制第0位数字
1100 -> 1*2**3 + 1*2**2 + 0*2**1 + 0*2**0 = 12 -> c
# 最后十六制数
0xc
#----- Python函数转换--------#
# 方法1,hex函数
>>> hex(0b1100)
'0xc'
# 方法2,先转为十进制,然后转为十六进制
>>> hex(int("0b1100",2))
'0xc'
>>> hex(int(0b1100))
'0xc'
八进制是一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢八进一。
八进制转二进制
八进制转二进制是二进制转八进制的反向过程,按照顺序,每1位八进制数改写成等值的3位二进制数,次序不变,不足时在最左边补零。
#----- 手动转换--------#
# 从右向左取第一位数转换
4 = 1*2**2 + 0*2**1 + 0*2**0 -> 100
# 从右向左取第二位数转换
1 = 1*2**0 -> 001
# 最后二进制
0b001100 或 0b1100
#----- Python函数转换--------#
# 方法1,bin函数
>>> bin(0o14)
'0b1100'
# 方法2,先转为十进制,然后转为二进制
>>> bin(int("0o14",8))
'0b1100'
>>> bin(int(0o14))
'0b1100'
八进制转十进制
八进制数第0位的权值是8的0次方,第1位的权值是8的1次方,依次类推,权值乘以相应系数并相加即可得到十进制数。
#----- 手动转换--------#
14 -> 1*8**1 + 4*8**0 = 12
#----- Python函数转换--------#
>>> int("0o14",8)
12
>>> int(0o14)
12
八进制转十六进制
八进制转十六进制有两种方法,一种是转为二进制然后再转十六进制,另一种是转为十进制然后转为十六进制。
#----- 手动转换--------#
# 先转换为二进制,然后转换为十六进制
0o14 -> 0b1100 -> 1*2**3 + 1*2**2 + 0*2**1 + 0*2**0 = 12 -> 0xc
# 先转换为十进制,然后转换为十六进制
0o14 -> 1*8**1 + 4*8**0 = 12 -> 0xc
#----- Python函数转换--------#
>>> hex(0o14)
'0xc'
>>> hex(int("0o14",8))
'0xc'
>>> hex(int(0o14))
'0xc'
十进制转二进制
十进制转二进制,采用“除二取余,逆序排列”的方法,用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
#----- 手动转换--------#
# 12转换二进制如下
12/2 ->0
6/2 ->0
3/2 ->1
1/2 ->1
12 --> 1100
#----- Python函数转换--------#
>>> bin(12)
'0b1100'
>>> bin(int("12",10))
'0b1100'
>>> hex(int(12))
'0b1100'
十进制转八进制
十进制转八进制,采用“除八取余,逆序排列”的方法,类似于十进制转二进制的方法。
#----- 手动转换--------#
# 12转换八进制如下
12/8 -> 4
1/8 -> 1
12 --> 14
#----- Python函数转换--------#
>>> oct(12)
'0o14'
>>> oct(int("12",10))
'0o14'
>>> oct(int(12))
'0o14'
十进制转十六进制
十进制转十六进制,采用“除十六取余,逆序排列”的方法,类似于十进制转二进制的方法。用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15,字母不区分大小写。
#----- 手动转换--------#
# 12转换十六进制如下
12/16 -> 12
12 --> 12 --> C
#----- Python函数转换--------#
>>> hex(12)
'0xc'
>>> hex(int("12",10))
'0xc'
>>> hex(int(12))
'0xc'
十六进制转二进制
十六进制转二进制,十六进制的一位对应二进制的四位,即每次取一位十六进制,按照十进制转二进制的方法,转换为4位的二进制。
#----- 手动转换--------#
# 取一位十六进制转换二进制,依次类推,然后在组合即可
0xac
c -> 12 -> 1100
a -> 10 -> 1010
0xac -> 10101100
#----- Python函数转换--------#
>>> bin(0xac)
'0b10101100'
>>> bin(int("0xac",16))
'0b10101100'
>>> bin(int(0xac))
'0b10101100'
十六进制转八进制
十六进制转八进制有两种方法,一种是先转换为二进制然后在转换为八进制,另外一种是先转换为十进制然后在转换为八进制。
#----- 手动转换--------#
# 先转换为二进制,然后转换为八进制
0xc -> 0b1100
100 -> 1*2**2 + 0*2**1 + 0*2**0 = 4
001 -> 0*2**2 + 0*2**1 + 1*2**0 = 1
0xc -> 0o14
# 先转换为十进制,然后转换为八进制
0xc -> 12*16**0= 12 -> 0o14
#----- Python函数转换--------#
>>> oct(0xc)
'0o14'
>>> oct(int("0xc",16))
'0o14'
>>> oct(int(0xc))
'0o14'
十六进制转十进制
十六进制数第0位的权值是16的0次方,第1位的权值是16的1次方,依次类推,权值乘以相应系数并相加即可得到十进制数。
#----- 手动转换--------#
0xc -> 12*16**0 = 12
#----- Python函数转换--------#
>>> int("0xc",16)
12
>>> int(0xc)
12
bin
二进制、oct
八进制、int
十进制、hex
十六进制