我对其中一些操作感到困惑(按位和逻辑运算组合)。
如果x = 0x3F且y = 0x75,找到diff c表达式的字节值:
1) x&y
2) x | y
3) ~x | ~y
4) x & ~y
5) x && y
6) x || y
7) !x || !y
8) x && ~y
尝试
首先,我将十六进制转换为二进制:
x = 00111111
y = 01110101
这是我的attemtps
1) 00110101
2) 01111111
3) 01111111
4) x & not y? isn't the bang operator a logical operator? what is the bit representation of !y?
5) x && y = TRUE = but how is that represented as a byte? 11111111?
6) x || y = how can this be represented as a byte?
7) !x || y = ???
8) x && ~y = ?????
答案 0 :(得分:1)
逻辑非运算符!
将“true”值变为“false”,反之亦然。并且因为任何非零被认为是“真”,所以操作符simple对于任何非零值都返回零。
这导致x & !y
为零,因为屏蔽任何零都为零。
“true”和“false”的逻辑值分别指定为1
和0
。这意味着逻辑运算符(即&&
或||
或一元!
)的结果始终为1
或0
。
如果你将上述两个陈述结合起来,你会明白为什么使用双逻辑 - 不(!!
)(你可能在某处看到过)总是返回0
或1
。< / p>
答案 1 :(得分:0)
X = TRUE, y = TRUE
--> !x = FALSE
--> !y = FALSE
----> FALSE OR FALSE = FALSE (0).