1

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

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

我在使用 AND、OR 和 NOT 的示例中应用 De Morgan 定律没有问题,但我很难将 NOT 与 + 和 - 一起使用

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

如何不分发?

编辑:回复评论:我意识到这是按位不。我的问题是:在代数方面,它是如何根据代数分布的?维基百科上的例子

4

1 回答 1

2

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

从 开始!(!x+y), 好!x-x - 1如此 , 然后 就是!(-x - 1 + y)哪个 变成-(-x - 1 + y) - 1哪个 简化 到x - y.

而对于!(y-1),那就变成了-(y - 1) - 1 = -y + 1 - 1 = -y

于 2010-09-10T21:57:02.623 回答