&,|,^,<< ,>>(5种按位运算符)

按位运算符是二进制的运算符,计算结果为int型。

1.& (按位与)

a=11&2
print(type(a),a)     //结果是<class 'int'> 2

1.将两个数都化为二进制,11(1011),2(10)
2.将位数少的用0补齐,在左边补0与位数多的位数一致,例如2(0010)
3.将11与补齐后的2,每一位进行比较,若相同位都为1,就取1反之取0
4.将取后的值列出(0010)
5.将值转化为十进制为2

2.| (按位或)

b=11|2
print(type(b),b)     //结果是<class 'int'> 11

1.将两个数都化为二进制,11(1011),2(10)
2.将位数少的用0补齐,在左边补0与位数多的位数一致,例如2(0010)
3.将11与补齐后的2,每一位进行比较,若相同位处有一个为1就取1,反之两个都为0就取0
4.将取后的值列出(1011)
5.将值转化为十进制为11

3.^ (按位异或)

c=11^2
print(type(c),c)     //结果是<class 'int'> 9

1.将两个数都化为二进制,11(1011),2(10)
2.将位数少的用0补齐,在左边补0与位数多的位数一致,例如2(0010)
3.将11与补齐后的2,每一位进行比较,若两个数相同位处的数字不同就取1,反之两个相同就取0
4.将取后的值列出(1001)
5.将值转化为十进制为9

4.<<(按位左移)

d=11<<2
print(type(d),d)     //结果是<class 'int'>44

1.将11转化为2进制(1011)
2.将根据按位符右边的数字,将二进制的1011左移2位,空位用0补齐(101100)
3.将得到的新数字转化为十进制 44

5.>>(按位右移)

e=11>>2
print(type(e),e)     //结果是<class 'int'>2

1.将11转化为2进制(1011)
2.将根据按位符右边的数字,将二进制的1011右移2位(10)
3.将得到的新数字转化为十进制 2