寻求用简单数学表达式实现或门(Or)的技术方法
或门(Or)的简单数学表达式推导
基于输入a、b仅为0或1的约束,这里提供几个简洁且无除以0问题的表达式:
表达式1:
y = 1 - (1 - a) * (1 - b)
逻辑推导:(1-a)是非门对a的输出,(1-b)是非门对b的输出,两者相乘对应非a与非b的逻辑(仅当a=0且b=0时结果为1,其余为0)。用1减去这个结果,就刚好得到或门的输出:当a、b至少一个为1时输出1,全0时输出0。
验证:- a=0,b=0 → 1 - (1-0)*(1-0) = 1-1=0
- a=1,b=0 → 1 - (0)*(1)=1-0=1
- a=0,b=1 → 1 - (1)*(0)=1-0=1
- a=1,b=1 → 1 - (0)*(0)=1-0=1
表达式2:
y = a + b - a*b
这个式子直接利用加法和乘法的组合:当a、b任意一个为1时,a+b的结果是1或2,减去a*b(仅当两者都为1时是1)后,结果始终是1;当两者都为0时,结果为0。完全符合或门逻辑,且无任何特殊情况。
验证:- a=0,b=0 → 0+0-0=0
- a=1,b=0 →1+0-0=1
- a=0,b=1 →0+1-0=1
- a=1,b=1 →1+1-1=1
表达式3:
y = |a + b - (a*b)|
这是表达式2的冗余版本(因为表达式2的结果本身只能是0或1,绝对值不影响),如果想统一用绝对值风格(和你已掌握的异或、非门格式一致),可以采用这个写法。
你之前尝试的(a+b)/(a+b)会在a=b=0时出现除以0的错误,上述所有表达式都规避了除法,完全适配0/1输入的场景。
内容的提问来源于stack exchange,提问作者RipMoney
相关产品推荐
相关产品推荐

