Java:什么 ~ 是什么意思

2022-08-31 11:57:26

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

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

波浪号是什么意思?~


答案 1

波浪号 () 执行 Java 中数值的按位补码。~

请参见:按位补码 (~):在数字中反转 1 和 0


答案 2

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

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

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

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

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

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