Python中按位与(&)、按位或(|)运算结果存疑,求逻辑解析
解析Python中的按位与(&)和按位或(|)运算
嘿,别困惑啦!按位运算的核心其实是把十进制数转换成二进制,然后对每一位进行对应规则的操作,咱们一个个拆解你给出的例子,看完你立马就能明白背后的逻辑~
一、按位与(&)运算:对应位全为1时结果才是1,否则为0
按位与的规则很直白:两个二进制位里,只要有一个是0,结果位就为0;只有当两个位都是1的时候,结果位才是1。
例子1:
22 & 1
先把数字转成二进制:- 22 的二进制是
10110 - 1 的二进制是
00001
对齐位数后逐位运算:
1 0 1 1 0 & 0 0 0 0 1 ----------- 0 0 0 0 0把结果二进制
00000转成十进制就是0,和你得到的输出完全一致。- 22 的二进制是
例子2:
22 & 21
转二进制:- 22 →
10110 - 21 →
10101
逐位运算:
1 0 1 1 0 & 1 0 1 0 1 ----------- 1 0 1 0 0二进制
10100转换成十进制是20,正好是你看到的结果。- 22 →
二、按位或(|)运算:对应位只要有一个是1,结果位就是1
按位或的规则是:两个二进制位里,只要有一个是1,结果位就为1;只有当两个位都是0的时候,结果位才是0。
例子1:
34 | 30
转二进制:- 34 →
100010 - 30 →
011110
逐位运算:
1 0 0 0 1 0 | 0 1 1 1 1 0 ------------- 1 1 1 1 1 0二进制
111110转换成十进制是62,和你的输出匹配。- 34 →
例子2:
2 | 9
转二进制:- 2 →
0010 - 9 →
1001
逐位运算:
0 0 1 0 | 1 0 0 1 --------- 1 0 1 1二进制
1011转换成十进制是11,完全符合你得到的结果。- 2 →
其实只要把十进制转成二进制,按照规则逐位计算,就能轻松搞懂这些运算啦~
内容的提问来源于stack exchange,提问作者subhanshu kumar
相关产品推荐
相关产品推荐

