我找到了一些练习,你可以用不同的方式组合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
如何分发?
编辑:回复评论:我意识到这是一个按位NOT。我的问题是:在代数方面,它如何按代数分布? Example on Wikipedia
答案 0 :(得分:2)
当你按位时使用2的补数而不是它们与数字减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
。