In source code I found this line:
if ((modifiers & ~KeyEvent.SHIFT_MASK) != 0) ....
Does somebody know what the ~
means?
Thanks
In source code I found this line:
if ((modifiers & ~KeyEvent.SHIFT_MASK) != 0) ....
Does somebody know what the ~
means?
Thanks
It is the Unary ~ Bitwise complement operator (quoting) :
See also this page on Bitwise operators on wikipedia, which states :
The bitwise NOT, or complement, is a unary operation that performs logical negation on each bit, forming the ones' complement of the given binary value. Digits which were 0 become 1, and vice versa.
For example:
NOT 0111 (decimal 7)
= 1000 (decimal 8)
In many programming languages (including those in the C family), the bitwise NOT operator is "
~
" (tilde).
The Tilde (~) performs a bitwise complement of a numerical value in Java.
See: http://www.java2s.com/Code/Java/Language-Basics/Bitwisecomplementinvertsonesandzerosinanumber.htm
From the official docs http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op3.html:
The unary bitwise complement operator "~" inverts a bit pattern; it can be applied to any of the integral types, making every "0" a "1" and every "1" a "0". For example, a byte contains 8 bits; applying this operator to a value whose bit pattern is "00000000" would change its pattern to "11111111".
As said before ~ is the unary bitwise NOT operator.
Your example tests whether modifiers
contains bits other than those defined in KeyEvent.SHIFT_MASK
.
~KeyEvent.SHIFT_MASK
-> all bits except those in KeyEvent.SHIFT_MASK are set to 1. (modifiers & ~KeyEvent.SHIFT_MASK)
-> every 1-bit in modifiers
that "does not belong" to KeyEvent.SHIFT_MASK
if ((modifiers & ~KeyEvent.SHIFT_MASK) != 0)
-> if there was at least one other bit set to 1 besides KeyEvent.SHIFT_MASK
do something...