#### Revision [17780]

This is an old revision of KeyPgOpNot made by FxMwikki on 2015-09-12 07:42:40.

### Operator Not (Complement)

Returns the bitwise-not (complement) of a numeric value

**Syntax:**

KeyPgDeclare declare KeyPgOperator operator

KeyPgDeclare declare KeyPgOperator operator

KeyPgDeclare declare KeyPgOperator operator

KeyPgDeclare declare KeyPgOperator operator

**Not**( KeyPgByref byref*rhs*KeyPgAs as KeyPgByte byte ) KeyPgAs as KeyPgInteger integerKeyPgDeclare declare KeyPgOperator operator

**Not**( KeyPgByref byref*rhs*KeyPgAs as KeyPgUbyte ubyte ) KeyPgAs as KeyPgInteger integerKeyPgDeclare declare KeyPgOperator operator

**Not**( KeyPgByref byref*rhs*KeyPgAs as KeyPgSingle single ) KeyPgAs as KeyPgInteger integerKeyPgDeclare declare KeyPgOperator operator

**Not**( KeyPgByref byref*rhs*KeyPgAs as KeyPgDouble double ) KeyPgAs as KeyPgInteger integer**Usage:**

`
`

*result*=

**Not**

*rhs*

**Parameters:**

*rhs*
The right-hand side expression.

*T*
Any numeric or boolean type.

**Return Value:**

Returns the bitwise-complement of its operand.

**Description:**

This operator returns the bitwise-complement of its operand, a logical operation that results in a value with bits set depending on the bits of the operand.

(for a boolean type, '

(for a boolean type, '

`false' returns true and '`**Not**`true' returns false)`**Not**
The truth table below demonstrates all combinations of a boolean-complement operation:

Rhs Bit | Result |

0 | 1 |

1 | 0 |

This operator can be overloaded for user-defined types.

**Examples:**

' Using the NOT operator on a numeric value

Dim numeric_value As Byte

numeric_value = 15 '00001111

'Result = -16 = 11110000

Print Not numeric_value

Dim numeric_value As Byte

numeric_value = 15 '00001111

'Result = -16 = 11110000

Print Not numeric_value

' Using the NOT operator on conditional expressions

Dim As UByte numeric_value1, numeric_value2

numeric_value1 = 15

numeric_value2 = 25

If Not numeric_value1 = 10 Then Print "Numeric_Value1 is not equal to 10"

If Not numeric_value2 = 25 Then Print "Numeric_Value2 is not equal to 25"

' This will output "Numeric_Value1 is not equal to 10" because

' the first IF statement is false.

' It will not output the result of the second IF statement because the

' condition is true.

Dim As UByte numeric_value1, numeric_value2

numeric_value1 = 15

numeric_value2 = 25

If Not numeric_value1 = 10 Then Print "Numeric_Value1 is not equal to 10"

If Not numeric_value2 = 25 Then Print "Numeric_Value2 is not equal to 25"

' This will output "Numeric_Value1 is not equal to 10" because

' the first IF statement is false.

' It will not output the result of the second IF statement because the

' condition is true.

**Dialect Differences:**

- In the
*CompilerOptlang -lang qb*dialect, this operator cannot be overloaded.

**Differences from QB:**

- None

**See also:**

Back to Logical Operators

Back to Operators