除了一般数字运算,Python也支持C语言中的大多数数学表达式。这包括那些把整数当作二进制位串对待的操作。还可以实现卫衣和布尔操作:
>>> X = 1 # 0001
>>> X << 2 # 左移两位,成了0100,即4
4
>>> X | 2 # 异或(0001 | 0010), 即3
3
>>> X & 1 # 同或(0001 & 0001), 即1
1
>>>
这样的按位进行编码的运算,使我们可以对一个整数进行多个标志位和值进行编码, Python 2.6开始支持二进制和十六进制变得特别有用,它允许我们按照位字符串来编写和查看数字:
>>> X = 0b0001 # 二进制数字
>>> X << 2 # 数字左移2位
4
>>> bin(X << 2) # 将二进制数字左移的结果以二进制的方式来显示
'0b100'
>>> bin(X | 0b010) # 将二进制数字异或的结果以二进制的方式来显示
'0b11'
>>> bin(X & 0b1) # 将二进制数字同或的结果以二进制的方式来显示
'0b1'
>>> X = 0xFF # 十六进制数字
>>> bin(X) # 对应的二进制
'0b11111111'
>>> X ^ 0b10101010 # 异或结果
85
>>> bin(X ^ 0b10101010) # 异或的结果转变成二进制
'0b1010101'
>>> int("1010101", 2) # 二进制
85
>>> hex(85) # 十六进制
'0x55'
>>>