Version 4 of |

Updated 2007-11-10 17:31:31 by dkf

expr bit-wise "or" operator

Arguments must be integers, result is an integer.

Bit n of the result is 0 if bit n of each argument is 0. Otherwise, bit n of the result is 1.

For negative arguments, observe that ~$n==(-1-n) (See the ~ operator for further discussion.) The following cases then exist:

Case Result
$a>=0, $b>=0 $a|$b, as defined above.
$a>=0, $b<0 $a|$b == ~(~$a & ~$b) De Morgan's Law
== ~(~$a & (-1-$b)) Extended definition of ~
== -1-(~$a & (-1-$b)) Extended definition of ~
The expression (-1-$b) is nonnegative, and so the expression (~$a & (-1-$b)) can be evaluated by bitwise operations.
$a<0, $b>=0 Commute to ($b | $a) and solve as above.
$a<0, $b<0 $a|$b == ~(~$a & ~$b) De Morgan's Law
== -1-((-1-$a) & (-1-$b)) Extended definition of ~
Since (-1-$a) and (-1-$b) are both nonnegative, the & in the expression above can be evaluated wuth bitwise operations.