bitwise OR AND, etc.

T

Travis

I don't have too much experience with bitwise operations. Here is what
I'm trying to accomplish. I have enum say:

enum myEnum { BILL = 0, KATIE = 1, JOHN = 2 }

Then I have an int that represents some combination of that enum,
like:

int WhoIsAllowed = BILL | KATIE | JOHN;

Then I wanted to be able to check an instance against the
WhoIsAllowed. like:

int KnockingAtDoor = BILL;

How can I check to see if BILL is in fact on the WhoIsAllowed?

I thought something like

if (KnockingAtDoor & WhoIsAllowed) { // let him in }

but it doesn't seem to be working.

Thanks.
 
I

Ian Collins

Travis said:
I don't have too much experience with bitwise operations. Here is what
I'm trying to accomplish. I have enum say:

enum myEnum { BILL = 0, KATIE = 1, JOHN = 2 }

Then I have an int that represents some combination of that enum,
like:

int WhoIsAllowed = BILL | KATIE | JOHN;

Then I wanted to be able to check an instance against the
WhoIsAllowed. like:

int KnockingAtDoor = BILL;

How can I check to see if BILL is in fact on the WhoIsAllowed?
Change the enum so BILL has one bit set.
 
T

Travis

As in don't start with 0 so that every value has at least some bit
set? I'll try that. Thanks.

This brings up another question, is it possible to search for the
absence of someone. Like

pseudo
if Zack ISNOTIN WhoIsAllowed
{
Add zack to list
}
 
G

Gianni Mariani

Travis said:
I don't have too much experience with bitwise operations. Here is what
I'm trying to accomplish. I have enum say:

enum myEnum { BILL = 0, KATIE = 1, JOHN = 2 }

write this like so:

enum myEnum { BILL = 1<<0, KATIE = 1<<1, JOHN = 1<<2 };
 
I

Ian Collins

Travis wrote:

Please trim your quotes!
This brings up another question, is it possible to search for the
absence of someone. Like

pseudo
if Zack ISNOTIN WhoIsAllowed
{
Add zack to list
}
Yes, use bitwise and.
 
J

Jim Langston

Travis said:
This brings up another question, is it possible to search for the
absence of someone. Like

pseudo
if Zack ISNOTIN WhoIsAllowed
{
Add zack to list
}

Lets say Joe is 1 (1<<0)
Lets say Zack is 2 (1<<1)
Lets say Bill is 4 (1<<2)

Lets say WhoIsAllowed is
int WhoIsAllowed = Joe | Bill;

Now, you want to know if Zack is allowed.

if (WhoIsAllowed & Zack )
// allowed
else
// Not allowed

WhoIsAllowed & Zack will be equal to 0. 0 used as bool is false.
WhoIsAllowed & Joe will be equal to 1. Non zeros used as bool is true.
WhoIsAllowed & Bill will be equal to 4. Non zeros used as bool is true.

No make it easier to figure out what you are doing, I would probalby code
it:
if ( WhoIsAllowed & Zack == 0 )
// Not Allowed

But again, read my prevoius response about why Iwouldn't use enums for htis
typeof thing anyway and code that I would use.
 
T

Travis

Thanks but this way of smacking readable labels with enums makes much
more sense. I don't have a ton users it's more like GOD, ADMIN, REG
and that's it.

Thank you everyone for your help.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,009
Latest member
GidgetGamb

Latest Threads

Top