I'm not actually trying to do x & -1, that would be pointless, as you say. It was just
the easiest way to demonstrate the behaviour that I didn't understand in a minimal
way. I understand the problem now--I was thinking of 0x as a prefix representing a bitmask
when used as a constant with a bitwise operation, while Go thinks of it as a prefix
representing a hexadecimal number even in that context.
What I *really* want to do is multiply 2 x/image/math/fixed.Int26_6 variables. I don't
want to lose the precision that x*y >> 6 would unnecessarily as x or y get large, so I wanted
to extract the first 26 bits, multiply them, and then separately multiply the decimal portion and add
it back shifted into the correct location.
(Int26_6 is defined as `type Int26_6 int32`)