C# XOR operators: ^ vs ^= and implicit type conversion
<p>I've noticed something odd about using the bitwise XOR operator on <code>byte</code>s in C#.  Odd to my mind, at least.</p>

<pre><code>byte a = 0x11;
byte b = 0xAA;
a ^= b;         // works
a = a ^ b;      // compiler error: Cannot implicitly convert type "int" to "byte"
</code></pre>

<p>I also see this issue using <code>short</code>, but not <code>int</code> or <code>long</code>.</p>

<p>I thought the last two lines were equivalent, but that doesn't seem to be the case. What's going on here?</p>
