能否用AND替代XOR实现奇偶校验?验证暴力解法正确性
基于AND的奇偶校验解法是否正确?
首先明确奇偶校验的核心逻辑:判断二进制数中1的个数是奇数还是偶数——通常返回1表示奇数个1,返回0表示偶数个1(或反之,只要逻辑一致即可)。
先看原暴力解法的逻辑:
def parity(x): result = 0 while x: result ^= x & 1 x >>= 1 return result
它利用异或(XOR)的特性:每遇到一个1就翻转result的值,最终result直接对应1的个数的奇偶性(1代表奇数个1,0代表偶数个1)。
再分析你写的基于AND的解法:
def parityUsingAnd(x): result = 0 while x: if x & 1 > 0: result += 1 x = x >> 1 return result % 2 == 0
这个解法的逻辑是完全正确的:
- 通过
x & 1判断当前最低位是否为1,是则对计数变量result累加 - 最后通过
result % 2 == 0判断总1的个数的奇偶性,返回True表示偶数个1,False表示奇数个1
需要注意的是返回值类型的差异:原函数返回整数0/1,你的函数返回布尔值True/False。如果题目要求返回整数,只需把返回语句调整为1 if result % 2 == 0 else 0(或0 if result % 2 else 1,取决于奇偶校验的定义方向),就能和原解法的返回格式完全对齐。
总结:这个基于AND的暴力解法逻辑正确,仅返回值类型与原解法不同,根据需求调整即可。
内容的提问来源于stack exchange,提问作者tripma
相关产品推荐
相关产品推荐

