Use unsigned types for offsets in expressions
Conversion routines cannot handle signed numbers correctly, because
the algorithm causes overflow, which is undefined behaviour for
signed integers.
It should be noted that signed conversion is currently broken on all
architectures that use a different binary representation than two's
complement, but since this bug affects only very few machines these
days, it has a low priority and is not addressed by this commit.
Signed-off-by: Petr Tesarik <petr@tesarici.cz>