2

我有一个 , , 的示例问题,解决w=1方案是,但我不知道为什么?y=7z=0x = ~(w && y) | y;x = -1

这是我的思考过程:
(w && y) = (1 && 7) = 1
~1
1 in bits is 0000 0001
~1 in bits is1111 1110

不知道从这里做什么。

4

4 回答 4

6

最后一步是按位或所以你得到:

1111 1110 | 0000 0111 = 1111 1111

这是-1。

于 2011-05-09T00:56:32.107 回答
1

~1 位是1111 11101111 1110或者0000 01111111 1111,并且1111 1111是 -1。最重要的位是负标志,负数是减法,我猜你可以说。这就是为什么有符号字节可以保持到 -128 但最多只能保持 127。

于 2011-05-09T00:58:00.287 回答
0

你说得~(w && y)1111...0。的最后一位71,因此|将其与 7 相加得到1111...1, 或-1

于 2011-05-09T00:58:07.200 回答
0

首先,您应该使用&而不是&&按位运算。其次,在~1 = 111...1110计算完之后,与y(7) 进行 OR 运算,得到1111..1111-1 的 2 补码表示。

于 2011-05-09T00:58:25.403 回答