The NOT operator returns the 1's complement of its operand, after it has been rounded down if it is not an integer. The 1's complement of a value can be considered -1-value. Some examples are:

NOT 0 is -1

NOT -1 is 0

NOT 5 is -6

NOT 5.7 is -6

NOT -6 is 5

NOT -6.2 is 6

Note that e.g. NOT5 is a variable name; to use the NOT operator without it becoming a variable name, it must be followed by a space, one of the other unary operators, or parentheses.

It is important not to confuse this (integer-only) bitwise NOT with !, the logical NOT operator. NOT FALSE (NOT 0) has the logical sense of TRUE (though it is not the same value as TRUE, 1), NOT TRUE also has the logical sense of TRUE, because the bitwise NOT 1 is -2, and any nonzero numerical value interpreted as a logic value is considered to be TRUE. (Most programming languages, when they have to have a correspondence between numerical values and logical values, use 0 for FALSE and -1 for TRUE, precisely so that the bitwise NOT on the boolean values is the same as the logical NOT. SmileBoom decided to go a different way.)

This operator is in the unary precedence group, which is the highest. This means all unary operators are evaluated before any others, e.g. the bitwise operators, so NOT A AND B is evaluated as (NOT A) AND B. Since all unary operators are prefixes to their operands, they are right-associative, i.e. the rightmost ones are evaluated first.