我遇到了w=1
,y=7
,z=0
,x = ~(w && y) | y;
以及解决方案为x = -1
的示例问题,但我无法弄清楚为什么?
这是我的思考过程:
(w& y)=(1&& 7)= 1
〜1个
1位是0000 0001
〜1比特是1111 1110
不知道该怎么办。
答案 0 :(得分:6)
最后一步是按位OR,所以你得到:
1111 1110 | 0000 0111 = 1111 1111
是-1。
答案 1 :(得分:1)
~1位是1111 1110
,
1111 1110
或0000 0111
为1111 1111
,
并且1111 1111
是-1。最重要的一点是负面标志,负面数字是减法的,我想你可以说。这就是为什么有符号字节可以保持-128但最多只能达到127。
答案 2 :(得分:0)
~(w && y)
给1111...0
你是对的。 7
的最后一位是1
,因此|
以7为1111...1
或-1
。
答案 3 :(得分:0)
首先,您应该使用&
代替&&
进行按位操作。其次,在计算~1 = 111...1110
之后,将其与y
(7)进行“或”运算得到1111..1111
,即2的补码表示为-1。