You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 17:17:15