Non capisco l'elevazione a potenza, non bastava uno shift? Più in generale, bastava un cast...
Vabbe', in ogni caso il codice guarda il numero
n: se è positivo, lo salva così com'è in
ncp2. Altrimenti, se è negativo salva
(256-n) in
ncp2 (questo nel caso che
char sia grande un byte, come di solito è negli x86). In pratica ricrea il meccanismo del complemento a 2, che magari può essere utile per un fine "didattico" (ma fatto così manco tanto, IMHO), almeno è l'unica possibilità che vedo.
ciao