我有一个 , , 的示例问题,解决w=1
方案是,但我不知道为什么?y=7
z=0
x = ~(w && y) | y;
x = -1
这是我的思考过程:
(w && y) = (1 && 7) = 1
~1
1 in bits is 0000 0001
~1 in bits is1111 1110
不知道从这里做什么。
我有一个 , , 的示例问题,解决w=1
方案是,但我不知道为什么?y=7
z=0
x = ~(w && y) | y;
x = -1
这是我的思考过程:
(w && y) = (1 && 7) = 1
~1
1 in bits is 0000 0001
~1 in bits is1111 1110
不知道从这里做什么。
最后一步是按位或所以你得到:
1111 1110 | 0000 0111 = 1111 1111
这是-1。
~1 位是1111 1110
,
1111 1110
或者0000 0111
是1111 1111
,并且1111 1111
是 -1。最重要的位是负标志,负数是减法,我猜你可以说。这就是为什么有符号字节可以保持到 -128 但最多只能保持 127。
你说得~(w && y)
对1111...0
。的最后一位7
是1
,因此|
将其与 7 相加得到1111...1
, 或-1
。
首先,您应该使用&
而不是&&
按位运算。其次,在~1 = 111...1110
计算完之后,与y
(7) 进行 OR 运算,得到1111..1111
-1 的 2 补码表示。