Ho letto la tua soluzione. A me sembra corretta.
Anch'io ho provato a risolvere il compito. Ho preso un approccio leggermento diverso.
Non ho uno scanner. Prova a descrivere a parole la mia soluzione.
Ho realizzato il modulo del numero X secondo la seguente formula Y = |X| = 0 -(-X)
I bit di controllo:
Xn-1 il bit del segno
Xn-1 = 0 -> il numero è positivo, si copia in uscita il bit Xi (Yi = Xi)
Xn-1 = 1 -> il numero è negativo, si va a vedere altri bit di controllo.
(in seguito viene chiamato S 'segno')
In pratica si realizza la seguente funzione Y = G - X, dove G = 0 (la costante)
Gi -> = 0 la costante (Gi = 1 -> la combinazione don't cary)
Bi -> il riporto della sottrazione (si propaga dal bit meno significativo '0')
Questa è la tabella della verità:
S Bi Gi Xi | Yi Bi+1
0 - - - Xi -
1 0 0 0 0 0
1 0 0 1 1 1
1 0 1 0 - -
1 0 1 1 - -
1 1 0 0 0 1
1 1 0 1 0 1
1 1 1 0 - -
1 1 1 1 - -
Il risultato è sempre di n-1 bit.