PRB: Result Incorrect with Bitwise AND Operator w/ Hex ValuesArticle ID: Q116498Creation Date: 20-JUN-1994 Revision Date: 19-SEP-1996
The information in this article applies to:
SYMPTOMS
Moderate: Requires basic macro, coding, and interoperability skills.
When you use the bitwise AND operator against two hexadecimal numbers, you
may receive incorrect results.
CAUSE
This behavior occurs when an integer is promoted and sign-extended to a
long number. For example, if you enter the expression
?HEX(&HFFFFFFFF AND &H0000FFFF)in the Debug window (or the Immediate window in versions 1.x and 2.0), you would expect to receive the value H0000FFFF as the result. However, the number &H0000FFFF is promoted and sign-extended to a long integer, to return the value &HFFFFFFFF.
RESOLUTION Add a trailing ampersand (&) to the hexadecimal numbers. This causes Microsoft Access to interpret the numbers as long integers, thus preventing the sign-extension from taking place. For example, the expression
?HEX(&HFFFFFFFF& AND &H0000FFFF&)results in the expected value &H0000FFFF. |
THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.