Let assume that you have two values
int first = 0x1;
int second = 0x2;
or using binary literals
int first = 0b01;
int second = 0b10;
As each of them is not equal to zero then expression
first && second
will be true. Non-zero values of scalar types are implicitly converted to true in logical expressions.
On the other hand if you will use expression
first & second
in some condition then it always will be equal to false because there is no common bit for the both numbers that is set. In the first number the first bit is set but in the second number it is equal to zero. In the second number the second bit is set but in the frist number it is rqual to zero.
So
0b01
&
0b10
====
0b00
As the result is equal to zero then it will be converted to false in logical expressions.