在引用按位运算符时,有什么区别!和〜?我觉得他们都在翻转位,但是 1 可能会在最终答案中添加 1?
~0xC4
compared to
!0xC4
谢谢!
在引用按位运算符时,有什么区别!和〜?我觉得他们都在翻转位,但是 1 可能会在最终答案中添加 1?
~0xC4
compared to
!0xC4
谢谢!
!不是按位运算符,而是布尔运算符。
布尔运算符对真值进行操作,通常为int. 任何非零值都为真,而 0 为假。结果总是1为真,0为假。
!不是布尔值&&是布尔值并且||是布尔值或这些是在 eg 中使用的,if因为它需要一个布尔值。布尔值和/或运算符也是短路的,这意味着它们在结果已知时停止评估。这很好,这意味着1 || crash_and_burn()永远不会崩溃和燃烧。
但是按位运算符对整数类型参数的每一位进行操作,当然是在促销等之后。
~按位不是&是按位和|是按位或^是按位异或 (xor)位运算符(当然)不是短路的,这没有任何意义,因为它们只是对位对进行操作。请注意,虽然有^按位运算符,但没有^^布尔异或运算符。
~0xC4 翻转位并执行以下操作:
1100 0100 (0xC4) --> 0011 1011 (0x3B)
!0xC4 翻转逻辑真值并执行以下操作:
True (0xC4) --> False (0)
!并且~是两种不同类型的运算符。!是逻辑否定,~是按位否定。
逻辑运算符是使用数学逻辑的运算符。
例如:Sally went to the market and bought milk.
如果p: Sally went to the market.
和q: Sally bought milk.
那么该语句可以显示为p && q。
现在,按位运算符是那些使用每个数字的二进制表示的运算符。
如果p = 10这可以表示为p = 1010 (binary)。
这q = 12可以表示为q = 1100 (binary)。
然后p & q = 1000 (binary)。
!和相同~。
!p = Sally did not go to the market.
~p = 0101.
在 C(和 C++)中,布尔值(真假想法)和 int 之间没有区别。这意味着布尔值由整数表示为True = 1和False = 0。
这里0xC4 = 1100 0100
所以,!0xC4 = 0000 0000 and ~0xC4 = 0011 1011 [0x3B]。
提示:如果您希望将某个变量转换为布尔值(即x = 5 -> x = 1),请使用!!x.
!!x -> !(!(5)) -> !(0) -> 1