I'm not quiet sure what exactly you are looking for but I'll give it a try.

The '&' and '|' perform bitwise mathematical operations, anmely AND and OR.

First of all, a number can be represented by a combination of '0' and '1'. Each bit represents the power of two at the bit's position. So, I can write the number 5 as 0*2^3+1*2^2+0*2^1+1*1^0 or binary '0101', a 4-bit number. You then have 8 bits for a byte and 16 bits for a double.

Now, if I am doing a bitwise AND operation then I want to check whether all bits that are set in the first number are also set in the second number.

So, if I have the numbers '5' and '2' and want to do a bitwise AND as in '5 & 2' I can write it as:
5 & 2
or
0101 & 0010
or

0101
&
0010
=
0000
=
0
Therefore, '5 & 2 = 0', and if it is being used in an IF clause, the condition would result in 'FALSE'

On the other hand, '5&4' would be

5&4
or
0101 & 0100
or
0101
&
0100
=
0100
=4

Therefore '5 & 4 = 4', and if it is being used in an IF clause, the condition would result in 'TRUE' since the reuslt is not equal '0'

Finally, if the '|' or OR operator is used, then evry bit is set that is set in either number, e.g. '5 | 2' would be

5 | 2
or
0101
|
0010
=
0111
=
7

So, the OR will always result in TRUE unless you do a '0 | 0' which will always be '0'.

I hope this was what you were looking for.

In the example you provided, the number that is the result of @PRODUCTSUITE is evaluated against all bits from 0-10 with bit 0 equal '1' and bit 10 equal '1024'. So, if I have @PRODUCTSUITE=49, then the bits 1, 16, and 32 are set since 1+16+32=49. Therefore the IF conditions testing @PRODUCTSUITE&1, @PRODUCTSUITE&16, and @PRODUCTSUITE&32 will evaluate to values not equal 0 (thus true)

_________________________
There are two types of vessels, submarines and targets.