青少年学Python-06:认识进制与按位运算

01 认识进制
本小节带大家认识一下二进制、八进制、十进制、十六进制。十进制数就是我们数学中通常所见的正整数,这里就不再赘述,那我们开始学习其他进制数吧~
1、二进制:只用“0”和“1”两个数来表示二进制,以2为基数,逢2进1。在Python中,以“0b”开头的数字为二进制数,使用bin()函数,可将十进制数转换成二进制。
2、八进制:使用数字“0~7”来表示八进制数,以8为基数,逢8进1。在Python中,以“0o”开头的数字为八进制数,使用oct()函数,可将十进制数转换成八进制。
3、十进制:在Python中int类型的数就是十进制,使用int()函数可将其他进制的数转换成十进制。
4、十六进制:使用数字“0~9”和字母“A-F(代表:10-15)”来表示16进制,以16为基数,逢16进1位。在Python中,以“0x”开头的数字为16进制数,使用hex()函数,可将十进制数转换成八进制。



案例教学:进制转换
# 100的二进制、八进制、十进制(),(Shell模式下)
>>>bin(100) # 二进制
'0b1100100'
>>>oct(100) # 八进制
'0o144'
>>>hex(100) # 十六进制
'0x64'
# 二进制'0b110010'转十进制
>>>int('0b110010',2)
50
# 八进制'0o62'转十进制
>>>int('0o62',8)
50
# 十六进制'0x32'转十进制
>>>int('0x32',16)
50



十进制转二进制计算
整数部分采用 "除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。如下图所示:

其他进制转十进制计算之“按权展开求和”
1、二进制转十进制:如'0b110010',从最后一位往前数权重是0、1、2、3、4、5,则该二进制的十进制为:1*2**5+1*2**4+0*2**3+0*2**2+
1*2**1+0*2**0=50;
2、八进制转十进制:方法同上,只不过2变成了8的次幂进行计算。如'0o62',从最后一位往前数权重是0、1,则该八进制的十进制为:6*8**1+2*8**0=48+2=50;
3、十六进制转十进制:方法同上,只不过2变成了16的次幂进行计算。如'0x32',从最后一位往前数权重是0、1,则该八进制的十进制为:3*16**1+2*16**0=48+2=50。


02 按位运算
在Python中位运算是先把十进制转换成二进制,然后按二进制位进行的计算。




案例教学:按位运算
>>>100 & 99
96
'''
解释:100的二进制为'0b1100100',99的二进制为'0b1100011',根据与的运算法则,结果为:'0b1100000',使用int('0b1100000',2)可得'0b1100000'的十进制为96
'''
>>> 100 | 99
103
'''
解释:100的二进制为'0b1100100',99的二进制为'0b1100011',根据或的运算法则,结果为:'0b1100000',使用int('0b1100111',2)可得'0b1100111'的十进制为103
'''
>>> 100 ^ 99
7
'''
解释:100的二进制为'0b1100100',99的二进制为'0b1100011',根据异或的运算法则,结果为:'0b0000111',使用int('0b0000111',2)可得'0b0000111'的十进制为7
'''
>>> 50 <<1
100
>>> 50 << 2
200
'''
左移一位相当于乘以2。
'''
>>> 100 >> 1
50
>>> 100 >> 2
25
'''
右移一位相当于除以2。
'''
测一测


下列进制转换成十进制数正确的是()
A.'0b10100' --> 20
B.'0o36' --> 36
C.10 --> '0b1110'
D. '0x28'--> 28

添加 家长论坛微信

全部 0条评论