【问题标题】:Where did I go wrong with the boolean logic?布尔逻辑哪里出错了?
【发布时间】:2012-09-07 15:28:52
【问题描述】:

对于小型数字系统,我的要求是“当驾驶员下车(b = 车内驾驶员)但钥匙仍在车内( c = 钥匙在里面)发动机,即使驾驶员已关闭车门锁杆(d = 锁杆已关闭)。注意:如果驾驶员在车内 (b) 并要求锁门 (d),那么门必须锁定(a)“。

我认为这可以分为两部分(其中整体表达是 1. 第一组需求和 2.“注意”部分,所以 1 + 2?)

对于第一部分,我认为布尔表达式应该是这样的:

a' = b' AND c AND d. 
a' = b'cd.

然后我尝试取两边的补码: (a')' = (b'cd)'

...并使用德摩根定律... a = (b'c)' + d' ...然后再次使用德摩根定律... a = b + c' + d'。

但这是否意味着“当驾驶员在车内或钥匙不在车内或车门锁杆未接合时,车门应锁定”。这根本没有意义。

在第二部分(注意:)中,我得到了 a = bd。那么,整体表达是否应该是这个与之前听起来不正确的部分的添加?然后我有:a = b + c' + d' + bd。通过类中给出的一个棘手的分配属性,我想我可以将 c' + bd 组件简化为 (c' + b)(c' + d)。那么我有 a = (c' + b)(c' + d) + b + d'。

这变得令人困惑;如果更多,我可以简化吗? (嗯,实际上,它可能一开始就不正确!)我哪里出错了,我该在哪里停下来?

【问题讨论】:

    标签: boolean-logic boolean-expression circuit


    【解决方案1】:

    我认为你最初的假设有问题,然后一切都崩溃了。你所拥有的是一个不完整的真值表:

    a  b  c  d
    ?  0  0  0
    ?  0  0  1
    ?  0  1  0
    0  0  1  1  <<< - this is the only data you have
    ?  1  0  0
    ?  1  0  1
    ?  1  1  0
    ?  1  1  1
    

    实际上,如果您仔细阅读问题陈述,看起来 d 确实是“无关紧要”(因为它说“即使...”),因此您的真值表中实际上可能有两个条目:

    a  b  c  d
    ?  0  0  0
    ?  0  0  1
    0  0  1  0
    0  0  1  1
    ?  1  0  0
    ?  1  0  1
    ?  1  1  0
    ?  1  1  1
    

    另一个可能的问题是您对 a 的解释。 a 并不意味着“门应该锁定”,它意味着“门可以被锁定”,因为您指定了一个不应该可能的情况锁上门。

    如果我们假设对于上述所有未知情况 a 为真(即在所有其他情况下门可以被锁定),那么我们有:

    a  b  c  d
    1  0  0  0
    1  0  0  1
    0  0  1  0
    0  0  1  1
    1  1  0  0
    1  1  0  1
    1  1  1  0
    1  1  1  1
    

    可以表示为:

    a = (b' AND c') OR b
    

    即只有在以下情况下,车门才能锁定:(i) 司机在车外,钥匙不在车内;或 (ii) 司机在车内。

    【讨论】:

    • 很好的说明。感谢您的帮助!
    猜你喜欢
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 2011-08-17
    • 1970-01-01
    相关资源
    最近更新 更多