user291701
user291701

Reputation: 39671

Bitwise operations, how to check for 0 or 1?

I have an integer like:

0x10000010

I would like to know if a particular bit is 1 or 0. For example, something like:

int number = 0x10000010;
for (int i = 0; i < 8; i++) {
    if (ith bit == 1) {
        System.out.println("bit " + i + " is 1.");
    } else {
        System.out.println("bit " + i + " is 0.");
    }
}

---- output ----
bit 0 is 1
bit 1 is 0
bit 2 is 0
bit 3 is 0
bit 4 is 0
bit 5 is 0
bit 6 is 1
bit 7 is 0

I've forgotten how to do this, and what this type of operation is called,

Thanks

Upvotes: 2

Views: 183

Answers (2)

Peter Lawrey
Peter Lawrey

Reputation: 533472

Similar to dty's answer

int number = 0b10000010; // you are assuming this is binary not hex.
for (int i = 0; i < 8; i++) {
    if((number >> i) & 1 != 0)
        System.out.println("bit " + i + " is 1.");
     else 
        System.out.println("bit " + i + " is 0.");
}

or

int number = 0b10000010; // you are assuming this is binary not hex.
for (int i = 0; i < 8; i++) 
    System.out.println("bit " + i + " is " + ((number >> i) & 1));

Upvotes: 3

dty
dty

Reputation: 18998

number & (1 << i) will be 0 if the bit wasn't set, non-zero if it was.

Upvotes: 8

Related Questions