Rappresentazione numeri negativi in informatica

HowardRoark
Posto nella sezione secondaria di secondo grado in quanto sto studiando informatica da un libro delle superiori. Comunque, se ho sbagliato, vi chiedo scusa e spostate pure il thread nella sezione più adatta.

Vorrei rappresentare $(-14)_10$ in binario. Poiché il numero è negativo, sul bit di segno scrivo $1$ e sugli altri la conversione binaria del modulo complemento a 2.
$(14)_10 = (1110)_2$
Calcolo il complemento a 2 di $14$: $(1110)_2 => (0010)_2$.
Infine, aggiungo il bit di segno "1" per poter rappresentare il numero negativo: $(0010)_2 => (1-0010)_2$. Quindi, $(1-0010)_2$ dovrebbe rappresentare $-14$. (scrivo "-" solo per dstinguere il bit di segno dagli altri, altrimenti la notazione è ambigua).
Il problema è che il mio libro rappresenta il numero $14$ con 6 bit (5 per il modulo del numero e l'ultimo per il bit di segno, presumo): $(14)_10 = (0-01110)_2$. Ora, gli zeri alla sinistra del numero non sono significativi, ma quando si fa il complemento a 2 lo diventano, in quanto gli zeri si invertono con 1 e viceversa. Quindi, perché il mio libro rappresenta $14$ con 6 bit quando a me verrebbe normale rappresentarlo con 4 (5 se includo il bit di segno)?
Scusate il dubbio banale, ma studio da autodidatta e non saprei a chi altro chiedere.

Risposte
Noodles1
Aggiungo solo che le limitazioni dei due addendi sono necessariamente più stringenti. Solo per fare un esempio, impostando gli interi a 8 bit, puoi divertirti a scrivere un semplice programma che stampi a video l'operazione sottostante:

$95+83=-78$

Sono gli inconvenienti dell'implementare l'aritmetica finita.

HowardRoark
"Noodles":


$95+83=-78$


Non dovrebbe essere $-77$? Il range del complemento a 2 su 8 bit è $[-128,+127]$
$95+83=178$, cioè sfora il range di $178-127 = 51$.
$-128+51 = -77$.

Noodles1
Il complemento a due di:

$178=10110010$

è:

$01001110=78$

HowardRoark
Vero, quindi $10110010$ rappresenta $-78$ (il bit più significativo è la potenza di 2 col meno, quindi $-2^7 + 2^5+2^4+2^1 = -78$), me ne sono reso conto meglio facendo semplicemente la somma in binario tra $95$ e $83$.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.