Solved

access bitwise AND operator?

Posted on 2000-03-20
10
1,548 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
Comment Utility
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
Comment Utility
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
Comment Utility
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
Comment Utility
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
Comment Utility
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
Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

 
LVL 37

Author Comment

by:meverest
Comment Utility
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
Comment Utility
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
Comment Utility
cool!

that works just fine,  thanks :)
0
 
LVL 37

Author Comment

by:meverest
Comment Utility
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
Comment Utility
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

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

Some time ago I was asked to create a VBA function that would calculate a check digit for an input number, using the following procedure: First, sum up all the individual digits in the number If that sum value has more than one digit, then sum up …
No matter the version of Windows you are using, you may have some problems with Windows Search running too slow or possibly not running at all. Before jumping into how you can solve this issue, just know there are many other viable alternative deskt…
This video shows the viewer how to set up and create Footnotes in their document. Click on the References tab: Select "Insert Footnote": Type in desired text:
This video walks the viewer through the process of creating envelopes and labels, with multiple names and addresses. Navigate to the “Start Mail Merge” button in the Mailings tab: Follow the step-by-step process until asked to find the address doc…

772 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

11 Experts available now in Live!

Get 1:1 Help Now