请求协助:用布尔代数证明((m xor a) xor (m and a))=(m or a)
布尔代数推导((m xor a) xor (m and a)) = (m or a)
别担心,我来一步步带你用布尔代数推导出这个等式——核心就是把异或拆解成基础的与、或、非运算,再结合布尔代数的常用定律化简就行!
首先,先明确布尔代数里的几个基础定义和定律:
- 异或的定义:
x xor y = x·¬y + ¬x·y(其中·表示与,+表示或,¬表示非) - 德摩根定律:
¬(x·y) = ¬x + ¬y,¬(x+y) = ¬x·¬y - 互补律:
x + ¬x = 1,x·¬x = 0 - 同一律:
x·1 = x,x + 0 = x - 分配律:
x·(y+z) = x·y + x·z,x+(y·z) = (x+y)·(x+z)
步骤1:展开最内层的异或
先处理等式左边的m xor a,根据异或定义:
m xor a = m·¬a + ¬m·a
步骤2:代入原式,展开外层异或
把上面的结果代入左边的完整表达式(m xor a) xor (m and a),设X = m·¬a + ¬m·a,Y = m·a,那么外层异或可以展开为:
X xor Y = X·¬Y + ¬X·Y
子步骤2.1:计算X·¬Y
首先用德摩根定律化简¬Y:¬(m·a) = ¬m + ¬a,然后代入展开:
X·¬Y = (m·¬a + ¬m·a) · (¬m + ¬a)
用分配律展开每一项:
= m·¬a·¬m + m·¬a·¬a + ¬m·a·¬m + ¬m·a·¬a
结合互补律和同一律化简:
m·¬m = 0→ 第一项为0¬a·¬a = ¬a→ 第二项为m·¬a¬m·¬m = ¬m→ 第三项为¬m·aa·¬a = 0→ 第四项为0
所以最终:
X·¬Y = m·¬a + ¬m·a
子步骤2.2:计算¬X·Y
先对X取反,用德摩根定律:
¬X = ¬(m·¬a + ¬m·a) = ¬(m·¬a) · ¬(¬m·a) = (¬m + a) · (m + ¬a)
展开这个表达式:
= ¬m·m + ¬m·¬a + a·m + a·¬a
化简:
¬m·m = 0,a·¬a = 0→ 剩下¬m·¬a + m·a
然后乘以Y = m·a:
¬X·Y = (¬m·¬a + m·a) · m·a
分配律展开:
= ¬m·¬a·m·a + m·a·m·a
化简:
¬m·m = 0→ 第一项为0m·m = m,a·a = a→ 第二项为m·a
所以最终:
¬X·Y = m·a
步骤3:合并结果并化简
把X·¬Y和¬X·Y相加,得到左边的完整表达式:
左边 = (m·¬a + ¬m·a) + m·a
合并同类项¬m·a + m·a,用分配律和互补律:
¬m·a + m·a = a·(¬m + m) = a·1 = a
代入后左边变为:
左边 = m·¬a + a
再用分配律和互补律化简:
m·¬a + a = (m + a)·(¬a + a) = (m + a)·1 = m + a
而m + a就是m or a,也就是等式的右边!
这样就完成了布尔代数的推导,和真值表的结果一致啦~
内容的提问来源于stack exchange,提问作者Omid Barkhordarian
相关产品推荐
相关产品推荐

