unsigned overflow is well defined in the C standard (unlike signed overflow), so whatever the hardware does the compiler must give us the result we expect.