【问题标题】:Mixing addition and subtraction with logical NOT用逻辑非混合加减法
【发布时间】:2010-09-10 21:31:36
【问题描述】:

我发现了一些练习,您可以在其中以不同的方式组合 n 位 2 的补码值,并尽可能简化输出。 (他们的练习使用 16 位,但这无关紧要)。

例如:
!(!x&!y) == x|y
0 & y, negate the output == -1

我在使用 AND、OR 和 NOT 的示例中应用德摩根定律没有问题,但我在使用 NOT 和 + 和 - 时遇到了困难

例如:
!(!x+y) == x-y
!(y-1) == -y

如何不分发?

编辑: 回复 cmets:我意识到这是按位 NOT。我的问题是:在代数方面,它是如何根据代数分布的? Example on Wikipedia

【问题讨论】:

  • 是按位NOT 还是“bang”运算符?
  • @BoltClock 我很惊讶没有人将!s 编辑成~s。

标签: boolean-logic


【解决方案1】:

使用 2 的补数,当你按位 NOT 时,这与说数字的负数减 1 相同,因此 !x 等效于 -x - 1 其中 x 可以是单个变量或表达式。

!(!x+y) 开始,!x 将是 -x - 1,所以它是 !(-x - 1 + y),它变成 -(-x - 1 + y) - 1,它简化为 x - y

对于!(y-1),则变为-(y - 1) - 1 = -y + 1 - 1 = -y

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2016-12-13
    • 2021-12-01
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    相关资源
    最近更新 更多