迁移C#至Python时对XOR(^)位运算逻辑的疑问
理解XOR(^)位运算的计算过程
首先明确XOR(按位异或)的核心规则:两个二进制位相同则结果为0,不同则结果为1,计算时会把两个数转换成二进制,逐位对比后得到结果,再转回十进制。
先看你疑惑的210 ^ 224 = 50的具体计算步骤:
- 把两个数转成8位二进制:
- 210 = 128 + 64 + 16 + 2 → 二进制
11010010 - 224 = 128 + 64 + 32 → 二进制
11100000
- 210 = 128 + 64 + 16 + 2 → 二进制
- 逐位异或对比:
1 1 0 1 0 0 1 0 ^ 1 1 1 0 0 0 0 0 ------------------- 0 0 1 1 0 0 1 0 - 把结果二进制转十进制:
32 + 16 + 2 = 50,这就是你得到的结果。
再把整个循环的每一步拆解清楚,对应你给出的取值序列:
- 初始值:
item_verif = 3(二进制00000011) - 第一步(^1):
3 ^ 1 = 2→00000011 ^ 00000001 = 00000010(十进制2) - 第二步(^2):
2 ^ 2 = 0→00000010 ^ 00000010 = 00000000(十进制0) - 第三步(^210):
0 ^ 210 = 210→ 0和任何数异或都等于原数 - 第四步(^224):就是上面计算的结果50
- 第五步(^97):
50 ^ 97 = 83- 50二进制:
00110010,97二进制:01100001 - 异或后:
01010011→ 64 + 16 + 2 + 1 = 83
- 50二进制:
你的Python代码逻辑和C#完全一致,因为两者的XOR位运算规则是完全相同的,都是基于整数的二进制位操作。
内容的提问来源于stack exchange,提问作者Nifuji17
相关产品推荐
相关产品推荐

