Solved

access bitwise AND operator?

Posted on 2000-03-20
10
1,557 Views
Last Modified: 2008-01-09
Hi Folks,

does access have a bitwise AND operator?

eg:

1 AND 2 = 0 (001 AND 010 = 000)
1 AND 3 = 2 (001 AND 011 = 010)
7 AND 1 = 1 (111 AND 001 = 001)
5 AND 2 = 0 (101 AND 010 = 000)
4 AND 0 = 0 (100 AND 000 = 000)
etc.

on testing, access gives:

1 AND 2 = 1
1 AND 3 = 1
7 AND 1 = 1
5 AND 2 = 1
4 AND 0 = 0

which suggests that the arguments are treated as >0 = TRUE

cheers.

0
Comment
Question by:meverest
10 Comments
 
LVL 22

Expert Comment

by:ture
ID: 2639417
meverest,

Which version of Access are you using? In Access 97 and Access 2000, bitwise operations ARE supported. Perhaps also in previous versions, but I have not been able to test that.

Try this in the "debug" or "immediate" window:

Print 1 and 2
Print 1 and 3
Print 7 and 1
Print 5 and 2

Ture Magnusson
Karlstad, Sweden
0
 
LVL 37

Author Comment

by:meverest
ID: 2639698
it is access97 and i want to do it in a query (from SQL view)

does this make a difference?  i am not familiar with vb macro/scripts.

cheers.
0
 
LVL 15

Expert Comment

by:cquinn
ID: 2639929
From Access help file:

The And operator also performs a bitwise comparison of identically positioned bits in two numeric expressions and sets the corresponding bit in result
 according to the following table:

If bit in expression1 is      And bit in expression2 is      The result is
0      0      0
0      1      0
1      0      0
1      1      1
0
 
LVL 37

Author Comment

by:meverest
ID: 2642150
thanks to all thus far.

all these points seem to suggest that access already does what i want, but for some unknown reason, many tests prove exactly the opposite.

take this test as an example:

i make a table 'data' that contains two columns 'a' and 'b', then i populate the table like this:

a b
1 2
2 2
3 2
4 2
5 2
6 2
7 2
8 2

and i create a new query:

select a from data where a AND b

i expect this output:

2, 3, 6, 7

but in fact i get:

1, 2, 3, 4, 5, 6, 7, 8

which suggests (as per previous comment) that access thinks that <= 0 is 'false' and that >= 1 is 'true'

regards.
0
 
LVL 6

Expert Comment

by:blakeh1
ID: 2642167
to set a bit use
the OR operator
to turn a bit off use AND NOT

example turn on the first bit use
me.Bitvalue=(me.bitvalue OR 2^0)
  to turn it off use
me.Bitvalue=(me.bitvalue AND NOT 2^0)

to get the bit value you can use something like

me.chkbox=((Me.Bitvalue And 2^0) = 2^0)


0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 37

Author Comment

by:meverest
ID: 2642269
thanks blakeh1,

but i do not understand how i apply this technique to an (access) sql query?

please see my previous comment defining what i am trying to do - this is what i need.

regards.
0
 
LVL 6

Accepted Solution

by:
blakeh1 earned 50 total points
ID: 2642302
to get the values of 2,3,6,7
yo must create a new field in the query and use
test: (([a]\[b]) Mod 2) and for it's criteria use 1

the sql would be

SELECT a, (([a]\[b]) Mod 2) AS test
FROM data
WHERE ((((([a]\[b]) Mod 2))=1));
0
 
LVL 37

Author Comment

by:meverest
ID: 2642354
cool!

that works just fine,  thanks :)
0
 
LVL 37

Author Comment

by:meverest
ID: 2642417
hmm, i jumped the gun a bit there...

it works only for that specific data set, but not as a general rule for (a AND b)

dang!

if you can't offer any more suggestions, i guess that i will need to post a new question :(

cheers.
0
 

Expert Comment

by:GuyCowley
ID: 8648527
I had this same problem and solved at with a function:

' Returns bitwise a and b
Public Function fnAND(a As Byte, b As Byte) As Byte

    fnAND = a And b

End Function
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article will show you how to use shortcut menus in the Access run-time environment.
Recently Microsoft released a brand new function called CONCAT. It's supposed to replace its predecessor CONCATENATE. But how does it work? And what's new? In this article, we take a closer look at all of this - we even included an exercise file for…
This video walks the viewer through the process of creating Hyperlinks for the web and other documents. Select the "Insert" tab: Click "Hyperlink":  Type "http://" followed by a web address to reference a website or navigate to a document to ref…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now