Java: ~ 是什么意思

新手上路,请多包涵

在此 Java 源代码中,我有这一行:

 if ((modifiers & ~KeyEvent.SHIFT_MASK) != 0) ....

代字号 ~ 是什么意思?

原文由 Martijn Courteaux 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 698
2 个回答

它是 一元 ~ 按位补码 运算符 (引用)

  • 仅与整数值一起使用
  • 反转位,即 0 位变为 1 位,反之亦然
  • 在所有情况下 ~x 等于 (-x)-1

另请参阅 维基百科上有关按位运算符的此页面,其中指出:

按位非或补码是一种一元运算,它对每一位执行逻辑非,形成给定二进制值的补码。原为 0 的数字变为 1,反之亦然。

例如:

 NOT 0111  (decimal 7)
  = 1000  (decimal 8)

在许多编程语言 (包括 C 系列语言) 中,按位 NOT 运算符是“ ~ ”(代字号)。

原文由 Pascal MARTIN 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题