function Bitwise_AND_IN_HEX(a$,b$)
    
    AND$="00000000000000000101010101010101002200220022002201230123012301230000444400004444010145450101454500224466002244660123456701234567000000008888888801010101898989890022002288AA88AA0123012389AB89AB000044448888CCCC010145458989CDCD0022446688AACCEE0123456789ABCDEF"
    res$=""
    f=1
    repeat 
         tp$= "0x" + mid(a$,f,1) + mid(b$,f,1) 
         res$=res$+mid(AND$,val(tp$,16)+1,1)
         inc f
    until f=len(a$)+1

endfunction res$

function Bitwise_OR_IN_HEX(a$,b$)
    
    OR$="0123456789ABCDEF1133557799BBDDFF23236767ABABEFEF33337777BBBBFFFF45674567CDEFCDEF55775577DDFFDDFF67676767EFEFEFEF77777777FFFFFFFF89ABCDEF89ABCDEF99BBDDFF99BBDDFFABABEFEFABABEFEFBBBBFFFFBBBBFFFFCDEFCDEFCDEFCDEFDDFFDDFFDDFFDDFFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFF"
    res$=""
    f=1
    repeat 
         tp$= "0x" + mid(a$,f,1) + mid(b$,f,1) 
         res$=res$+mid(OR$,val(tp$,16)+1,1)
         inc f
    until f=len(a$)+1

endfunction res$

function Bitwise_XOR_IN_HEX(a$,b$)
    
    XOR$="0123456789ABCDEF1032547698BADCFE23016745AB89EFCD32107654BA98FEDC45670123CDEF89AB54761032DCFE98BA67452301EFCDAB8976543210FEDCBA9889ABCDEF0123456798BADCFE10325476AB89EFCD23016745BA98FEDC32107654CDEF89AB45670123DCFE98BA54761032EFCDAB8967452301FEDCBA9876543210"
    res$=""
    f=1
    repeat 
         tp$= "0x" + mid(a$,f,1) + mid(b$,f,1) 
         res$=res$+mid(XOR$,val(tp$,16)+1,1)
         inc f
    until f=len(a$)+1

endfunction res$
   
Function exclusive_or(A,B)

         // Mask input bits together to find the common bits in both
         Mask = A AND B

         // Invert Mask (remember 2's complement :) )
         InvertedMASK = -1 - MASK

         // Clean bits out that appear in both, since we should only
         // return set bits when a bit is 1/0 or 0/1 
         A= A AND InvertedMask
         B= B AND InvertedMask

         // Or them together
         Result = A OR B
EndFunction Result


