&,|,^,<< ,>>(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