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)