问题
What does this expression actually mean??
Note - the x and y vars are just sample values.
int x = 3;
int y = 1;
if ((x & y) !=0)
I inherited a codebase and am not up to speed on bitwise operators. I have read up, but am still missing something. Help!
回答1:
It's comparing the bits in each value. It returns any bits that are set in both numbers.
In your example:
3: 0011
1: 0001
3 & 1: 0001
回答2:
This checks whether x and y both have at least one common bit set. In the case of your example this would be the true.
回答3:
if ((x & y) != 0)
This would typically be used to determine whether the value x
has a specific bit-flag (y
) set. The AND operator returns an integer with only those bits set that are set in both operands.
来源:https://stackoverflow.com/questions/7491419/c-sharp-bitwise-operator-with-ints