# >> << & ~ |+ |^ (Bit Operators)

## Purpose:

Bit left shift, bit right shift, bit and, bit complement, bit or, bit xor operators.

## Syntax:

val1 op val2

 val1 - A scalar, series, or table. val2 - A scalar, series, or table.

## Returns:

A scalar, series, or table.

## Example:

W1: {1, 2, 3, 4}

W2: W1 >> 1

returns the series {0, 1, 1, 2}. The bits of each value in the series are shifted one place to the right resulting in an integer divide by 2.

## Example:

W1: {1, 2, 3, 4}

W2: W1 << 1

returns the series {2, 4, 6, 8}. The bits of each value in the series are shifted one place to the left resulting in an integer multiply by 2.

## Example:

W1: {1, 2, 3, 4}

W2: W1 & 0x01

returns the series {1, 0, 1, 0} indicating the values that have the lowest bit set.

## Example:

W1: {1, 2, 3, 4}

W2: ~W1

returns the series {-2, -3, -4, -5}, the bit complement of W1.

## Example:

W1: {1, 2, 3, 4}

W2: bitor(W1, 0x01)

returns the series {1, 3, 3, 5} by effectively adding 1 to each even value.

## Example:

W1: {1, 2, 3, 4}

W2: W1 |+ 0x01

returns the series {1, 3, 3, 5}.

## Example:

W1: {1, 2, 3, 4}

W2: bitxor(W1, 0x01)

returns the series {0, 3, 2, 5} by effectively adding 1 to each even value and subtracting 1 from each odd value.

## Example:

W1: {1, 2, 3, 4}

W2: W1 |^ 0x01

returns the series {0, 3, 2, 5}.

## Remarks:

The following bit operators are supported:

 Operator Function Description >> BITRSHIFT bit shift right << BITLSHIFT bit shift left & BITAND bit and ~ BITCOMP bit complement |+ BITOR bit or |^ BITXOR bit exclusive or

The | symbol is not used as the BITOR operator since | is the deprecated pipe operator. Use |+ to implement BITOR.

The ^ symbol is not used as the BITXOR operator since ^ is the exponentiation operator. Use |^ to implement BITXOR.