OPERATORS:
&  ^ ~ << >> >>>
Bitwise
operators perform logical and shift operations. They work by treating
their operands as a series of 32 bits and performing their operations
on them at this bit level. However, the return value is a decimal format
number.
The following examples of bitwise logical operators assume the variable
'a' to be 13 (binary 1101) and 'b' to be 9 (binary 1001)
&
This is the bitwise AND operator which returns a 1 for each bit position
where the corresponding bits of both its operands are 1. The following
code would return 9 (1001):
Code:
result = a & b;

This is the bitwise OR operator and returns a one for each bit position
where one or both of the corresponding bits of its operands is a one.
This example would return 13 (1101):
Code:
result = a  b;
^
This is the bitwise XOR operator, which returns a one for each position
where one (not both) of the corresponding bits of its operands is a one.
The next example returns 4 (0100):
Code:
result = a ^ b;
~
This is the bitwise NOT operator and it works by converting each bit
of its operand to its opposite. This example returns 14:
Code:
result = ~a;
The following bitwise operators perform shift operations. In the examples
the variable 'a' is assumed to be 13 (binary 1101) and the variable
'b' 2 (binary 10).
<<
This is the left shift operator and it works by shifting the digits
of the binary representation of the first operand to the left by the
number of places specified by the second operand. The spaces created
to the right are filled in by zeros, and any digits falling off the
left are discarded. The following code returns 52 as the binary of 13
(1101) is shifted two places to the left giving 110100:
Code:
result = a << b;
>>
This is the signpropagating right shift operator which shifts the
digits of the binary representation of the first operand to the right
by the number of places specified by the second operand, discarding
any shifted off to the right. The copies of the leftmost bit are added
on from the left, thereby preserving the sign of the number. This next
example returns 3 (11) as the two rightmost bit of 13 (1101) are shifted
off to the right and discarded:
Code:
result = a >> b;
Note that if 'a' were 13 in the above example, the code would return
4 as the sign is preserved.
>>>
This is the zerofill right shift operator which shifts the binary
representation of the first operand to the right by the number of places
specified by the second operand. Bits shifted off to the right are discarded
and zeroes are added on to the left. With a positive number you would
get the same result as with the signpropagating right shift operator,
but negative numbers lose their sign becoming positive as in the next
example, which (assuming 'a' to be 13) would return 1073741820:
Code:
result = a >>> b;
