I think the CPU has to do extra work to throw away that high bit, no?
No, the x86 has never had any trouble with this, and I don't think ARM does either (worst case you load it as int, then save it as byte).
I still don't love the idea that: a = a + 1; fails, but ++a; a += 1; works just fine.
indeed. I used to defend that but really the logic goes both ways, either way.