Precedence and bitmask operations

bit-manipulation, bitwise-operators, operator-precedence, php

Solution

You are actually doing this:

var_dump(0b10 & (0b01 == 0));
var_dump(0b10 & (0b01 != 0));

Try:

var_dump((0b10 & 0b01) == 0);
var_dump((0b10 & 0b01) != 0);

Problem

I've come across a (seemingly) very strange case. Take the number 2 (`0b10`) and bitmask it with 1 (`0b01`) This should produce `0b00` which is equivalent to 0. However, here's where Mr Schrödinger comes in: ``` var_dump(0b10 & 0b01); // int(0) var_dump(0b10 & 0b01 == 0); // int(0) var_dump(0b10 & 0b01 != 0); // int(0) ``` Whiskey. Tango. Foxtrot. I am, admittedly, not the sharpest when it comes to bitwise operators - so maybe I've got horribly, horribly wrong somewhere? However, in Python: `0b10 & 0b01 == 0` = `True` `0b10 & 0b01 != 0` = `False` ...so?

Original source