Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Bitwise function(s) Question -- Again!
Message
De
13/11/2002 18:22:43
 
 
À
13/11/2002 17:17:39
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Divers
Thread ID:
00722339
Message ID:
00722446
Vues:
31
>
>>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.
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform