Bitwise Operators

In addition to the normal arithmetic operators, WMLScript provides four operators for performing Boolean arithmetic on the bits that make up integers. These operators all operate only on integers, so if any operand can’t be converted to an integer, the result of the operation is invalid.

Bitwise complement (also called bitwise not) flips every bit in its argument. (Every 0 bit becomes 1, and every 1 bit becomes 0.) It’s represented by the ~ operator.

Bitwise and , or , and exclusive or each operate on two integers. For each bit position (32 of them), the bit in the result is set depending on the corresponding bits in the two operands. Bitwise and (represented by & ) sets this bit if both operand bits are set, bitwise or (represented by | ) sets it if either of the operand bits are set, and bitwise exclusive or (represented by ^ ) sets it if exactly one of the operand bits are set. This may sound complicated, but study the examples and it should become clear.

These operators all behave in exactly the same way as their counterparts in C and Java, so if you know either of those languages, you’ll feel right at home.

Examples include (some numbers are in hexadecimal to make the bit patterns clearer):

0x0110 & 0x0011 gives integer 0x0010
0x0110 | 0x0011 gives integer 0x0111
0x0110 ^ 0x0011 gives integer 0x0101
6 & 3 gives integer 2
6 | 3 gives integer 7
6 ^ 3 gives integer 5
~1 gives integer 0xFFFFFFFE
~0 gives integer 0xFFFFFFFF

The bitwise operators aren’t ...

Get Learning WML, and WMLScript now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.