Geas MUD, enter the Aventure!
Geas Home | Play the Game

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.2.7.3 Boolean operators

Boolean (binary) operators are applicable only to integers with the exception of the & operator which also works on arrays. Internally an integer is 32 bits long. However, in the following examples I will only show the ten last bits as the others are 0 and can be ignored with the one exception of the ~-operator.

  1. E1 & E2 E1 and E2.

     
    1011101001   (= 745)
    1000100010 & (= 546)
    ------------
    1000100000   (= 544) => 745 & 546 = 544
    

    Used on two arrays, this function will return a new array that holds all elements that are members of both of the argument arrays.

  2. E1 | E2 E1 or E2.

     
    1011101001   (= 745)
    1000100010 | (= 546)
    ------------
    1011101011   (= 747) => 745 | 546 = 747
    

  3. E1 ^ E2 E1 xor (exclusive or) E2.

     
    1011101001   (= 745)
    1000100010 ^ (= 546)
    ------------
    0011001011   (= 203) => 745 ^ 546 = 203
    

  4. ~E 1-complement of E (invert E).

     
    00000000000000000000001011101001 ~ (= 745)
    ----------------------------------
    11111111111111111111110100010110   (= -746) => ~745 = -746
    

    NB! The above example might be hard to understand unless you really know your binary arithmetic. However, trust me when I say that this is not a typo, it's the way it should look. Read a book on boolean algebra (the section on two-complement binary arithmetic) and all will be clear.

  5. E1 << E2 E1 is shifted left E2 steps.

     
    5 << 4 => 101(b) << 4 = 1010000(b) = 80
    

  6. E1 >> E2 E1 is shifted right E2 steps.

     
    1054 >> 5 => 10000011110(b) >> 5 = 100000(b) = 32
    



This document was generated by Ronny Wikh on July, 8 2003 using texi2html