Albert:
Thanks for a brilliant and enlightening explanation. It is truly appreciated!
Best
>>
>>>bitand(nFlags, bitxor(nReset, 0xffffffff))
>>
>>
>>Albert,
>>
>>What is the significance of "0xffffffff" ? Sorry to be thick. Could you explain the logic of the above if you have the time?
>>
>>Thanks.
>
>All VFP bitwise operations are done on 32 bit unsigned integers.
>0xfffffff is the hexadecimal representation of a 32 bit unsigned integer with all bits set.
>
>XORing 0xfffffff with any value returns a
Mask, by resetting the bits that represent the value. eg.
>
>Hex.
>0xfffffff XOR
>0x00000008 =
>0xfffffff7
>
>Bin.
>11111111111111111111111111111111 XOR
>00000000000000000000000000001000 =
>11111111111111111111111111110111
>
>Dec.
>4294967295 XOR
>0000000008 =
>4294967287
>
>ANDing the
Mask with a value returns a value that has been filtered through the mask.
>
> eg.
>Hex.
>0xfffffff7 AND
>0x0000000a =
>0x00000002
>
>Bin.
>11111111111111111111111111110111 AND
>00000000000000000000000000001010 =
>00000000000000000000000000000010
>
>Dec.
>4294967287 AND
>0000000010 =
>0000000002
>
>Remember that 0xffffffff is 4294967295 in 32 bit unsigned integers, VFP normally treats integers as signed. 0xffffffff is -1 in 32 bit signed integers. because of this
bitand(nFlags, bitxor(nReset, -1))
will also work.
-=Gary