'''
位运算符:按位运算符是把数字看做二进制数来进行计算
'''
# & 按位与运算符
#相应的位数都为1,则该位的结果是1,否则为0
print(5 & 7)
'''
101
111
---
101
'''
# 按位或运算符
# 两个二进制位有一个位1时,结果为1
print(5 | 7)
'''
101
111
---
111
'''
# ^ 按位异或运算符
#二进制的两位相异时,结果为1
print(5 ^ 7)
'''
101
111
---
010
'''
# ~ 按位取反运算符
# 每个二级制数据位取反,1变0,0变1
print(~5)
'''
11111111111111111111111111111111
10000000000000000000000000000001
'''
# << 左移动运算符
#各二进制位全部左移动若干位,由<<右侧的数字决定,高位丢弃,低位补0
print(2 << 2)
#000000010
# >> 右移动运算符
#各二进制位全部右移动若干位,由>>右侧的数字决定
print(-13 >> 2)
#00000001101
#00000000011