Es reicht, i/2 Stellen zu spiegeln, d.h. zu vertauschen.
Das beschriebene ist aber ein recht rechenaufwendiges Verfahren.
Suche nach Peters Danneggers Add-Sub-Methode, die braucht keine "teuren"
%- und /-Operationen.
% ist die Modulo-Funktion, d.h. der Rest der Division. Damit werden die
einzelnen Ziffern berechnet.
> u = ( (unsigned)-(z+1) ) + 1;
Die Zeile und deren Original-Kommentar sind ziemlich sinnlos.
Gemeint ist, dass bei z.B. bei int16_t es zwar -32768, aber nur +32767
gibt.
Der Autor meint, dass er das mit dem +1 irgendwie umschiffen kann
(-32768+1=-32767), das geht aber nicht, weil sich in der int_t 32768
immer noch nicht darstellen lässt.
Er müsste es schon in eine neue unsigned-Variable berechnen.
I.d.R braucht man aber diese Fallunterscheidung gar nicht, der Compiler
/ Prozessor macht es irgendwie richtig.