【发布时间】:2016-02-04 15:37:56
【问题描述】:
我正在尝试检查int x 是否有任何位等于1,答案是!!x。我用谷歌搜索了一下,没有找到任何关于为什么这是正确的。
假设我有一个号码x 是1010。
!x 会是什么? !x 和 ~x 有什么区别?
【问题讨论】:
-
您是否在任何地方阅读过
~和!运算符的描述(如C 书)?如果是这样,您觉得难以理解的具体是什么? -
做的目的例如
!!x是得到一个数字真假值。如果x不为零,则!!x将是1。对按位否定运算符~做同样的事情是没有意义的。 -
这是写太易读的
x != 0的两种混淆方式。提示:为了最大程度地混淆,写??-??-x。然后你几乎可以肯定没有人,包括你自己,知道代码的作用。任务完成。 -
!是一个逻辑非,如果运算符为FALSE,则产生TRUE结果。~是一个 boolean not,它对运算符逐位执行布尔否定。因为在 C 中只有值 0 被认为是FALSE而所有其他值都被认为是TRUE操作!x将是TRUE仅当x==0时,然后再次逻辑反转!!x将是FALSE如果 @ 987654348@ 和TRUE如果任何位为 1。
标签: c bitwise-operators logical-operators negation