// bad = (1 | 2) ^ 3 // = 3 ^ 3 // = 0 // good = 1 | (2 ^ 3) // = 1 | 1 // = 1 or_xor = 1 | 2 ^ 3; // bad = (5 ^ 2) & 3 // = 7 & 3 // = 3 // good = 5 ^ (2 & 3) // = 5 ^ 2 // = 3 xor_and = 5 ^ 2 & 3; // bad = (7 & 2) << 1 // = 2 << 1 // = 4 // good = 7 & (2 << 1) // = 7 & 4 // = 4 and_shl = 7 & 2 << 1; // bad = 8 << (2 >> 1) // = 8 << 1 // = 16 // good = (8 << 2) >> 1 // = 32 >> 1 // = 16 shl_shr = 8 << 2 >> 1; // bad = (3 >> 1) + 2 // = 1 + 2 // = 3 // good = 3 >> (1 + 2) // = 3 >> 3 // = 0 shr_add = 3 >> 1 + 2; // bad = 1 + (2 - 3) // = 1 + -1 // = 0 // good = (1 + 2) - 3 // = 3 - 3 // = 0 add_sub = 1 + 2 - 3; // bad = (1 + 2) * 3 // = 3 * 3 // = 9 // good = 1 + (2 * 3) // = 1 + 6 // = 7 add_mul = 1 + 2 * 3; // bad = 3 * (2 / 1) // = 3 * 2 // = 6 // good = (3 * 2) / 1 // = 6 mul_div = 3 * 2 / 1; mod = 5 % 4; unary_inv = ~0; unary_neg = 5 + -4;