imperium2335
imperium2335

Reputation: 24112

MySQL bitwise operations

I am trying to understand bitwise operators in MySQL.

I have:

SELECT 1 & 51 FROM bits = 1
SELECT 2 & 51 FROM bits = 2
SELECT 3 & 51 FROM bits = 3
SELECT 4 & 51 FROM bits = 0
SELECT 5 & 51 FROM bits = 1
SELECT 6 & 51 FROM bits = 2

With SELECT 1 & 51 FROM bits is this asking that the first bit (1) is present in both 1 and 51, if it is then I understand this.

But SELECT 6 & 51 FROM bits = 2 doesn't make sense to me as the 6th bit would be 32(?) which isn't is 6, as 6 is made from the 2nd and 4th bit(?), but 32 is present in 51.

So I am a bit confused as to how this works, could someone please explain?

Upvotes: 1

Views: 2225

Answers (2)

Mureinik
Mureinik

Reputation: 311163

The two arguments aren't the indexes of the bits - it means you represent each number in binary, and perform the operation between each bit independently.

 6 in binary: 000110
51 in binary: 110011
AND           ======
              000010

The result, 000010, is the binary representation of 2.

(Note the the preceeding zeros were truncated for clarity's sake)

Upvotes: 1

Gordon Linoff
Gordon Linoff

Reputation: 1269623

"6" doesn't refer to the sixth bit. It refers to the binary value. With 8 bits: 00000110.

If you want the sixth bit, use either 1<<6 or 32.

Upvotes: 0

Related Questions