Rappresentazione numeri negativi in informatica

Messaggioda HowardRoark » 19/05/2024, 09:00

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.
$(Z –>)^(90º) – (E–N^2W)^(90º)t = 1$
Avatar utente
HowardRoark
Senior Member
Senior Member
 
Messaggio: 1048 di 1996
Iscritto il: 13/07/2016, 09:02

Messaggioda Noodles » 19/05/2024, 09:37

In complemento a due, dove 0 è rappresentato univocamente, se si utilizzano 5 bit:

$-16 lt= (x)_10 lt= 15$

$(-14)_10=(10010)_2$

e se si utilizzano 6 bit:

$-32 lt= (x)_10 lt= 31$

$(-14)_10=(110010)_2$

Insomma, di bit ne bastano 5. Se, per un qualche motivo, se ne devono utilzzare 6, basta prenderne atto. Ad ogni modo, non so come il tuo libro determini il complemento a due. Tipicamente, utilizzando n bit:

$-2^(n-1) lt= (x)_10 lt= 2^(n-1)-1$

e il valore del bit all'estrema siinistra (se 0 il numero è positivo, se 1 il numero è negativo) identifica il segno.
Noodles
Junior Member
Junior Member
 
Messaggio: 277 di 349
Iscritto il: 23/01/2023, 17:06

Re:

Messaggioda HowardRoark » 19/05/2024, 16:40

Noodles ha scritto:In complemento a due, dove 0 è rappresentato univocamente, se si utilizzano 5 bit:

$-16 lt= (x)_10 lt= 15$

$(-14)_10=(10010)_2$

e se si utilizzano 6 bit:

$-32 lt= (x)_10 lt= 31$

$(-14)_10=(110010)_2$



Ma questa notazione: $(-14)_10 = (10010)_2$ non è ambigua? $(10010)_2$ sta anche per $(17)_10$.

Noodles ha scritto: di bit ne bastano 5. Se, per un qualche motivo, se ne devono utilzzare 6, basta prenderne atto. Ad ogni modo, non so come il tuo libro determini il complemento a due. Tipicamente, utilizzando n bit:

$-2^(n-1) lt= (x)_10 lt= 2^(n-1)-1$

e il valore del bit all'estrema siinistra (se 0 il numero è positivo, se 1 il numero è negativo) identifica il segno.


Il mio libro non definisce il complemento a due, c'è solo scritto come determinarlo:
1) Si effettua il complemento a 1 del numero stesso, che consiste nel cambiare gli 0 in 1 e viceversa, quindi si somma il valore 1 al complemento a 1;
2) oppure si parte dal bit meno significativo, si lasciano invariati tutti i bit fino al primo 1 (compreso), quindi si cambiano i bit rimanenti.

Dopo aver dato queste regole operative, fa l'esempio di $(-14)_10$ per convertirlo in base 2
$(Z –>)^(90º) – (E–N^2W)^(90º)t = 1$
Avatar utente
HowardRoark
Senior Member
Senior Member
 
Messaggio: 1049 di 1996
Iscritto il: 13/07/2016, 09:02

Re: Rappresentazione numeri negativi in informatica

Messaggioda ghira » 19/05/2024, 17:10

Se il primo bit è il segno, non puoi scrivere $(17)_{10)$ in 5 bit quindi no, la notazione non è ambigua.
Avatar utente
ghira
Cannot live without
Cannot live without
 
Messaggio: 2812 di 4307
Iscritto il: 11/09/2019, 09:36

Re: Rappresentazione numeri negativi in informatica

Messaggioda HowardRoark » 19/05/2024, 17:37

Comunque è il contesto che chiarisce tutto, cioè se ci si riferisce a un numero con un bit di segno o semplicemente un numero binario. Immagino non sarà un problema capirlo.
$(Z –>)^(90º) – (E–N^2W)^(90º)t = 1$
Avatar utente
HowardRoark
Senior Member
Senior Member
 
Messaggio: 1050 di 1996
Iscritto il: 13/07/2016, 09:02

Re: Rappresentazione numeri negativi in informatica

Messaggioda ghira » 20/05/2024, 07:48

HowardRoark ha scritto: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.


Magari perché qualcuno vuole _poter_ scrivere numeri più grandi ma in questo momento ha bisogno di scrivere il numero 14. In molti linguaggi di programmazione magari puoi scegliere fra 8, 16, 32 e 64 bit.
Avatar utente
ghira
Cannot live without
Cannot live without
 
Messaggio: 2817 di 4307
Iscritto il: 11/09/2019, 09:36

Re: Rappresentazione numeri negativi in informatica

Messaggioda HowardRoark » 20/05/2024, 10:49

ghira ha scritto:
Magari perché qualcuno vuole _poter_ scrivere numeri più grandi ma in questo momento ha bisogno di scrivere il numero 14. In molti linguaggi di programmazione magari puoi scegliere fra 8, 16, 32 e 64 bit.

Ora è più chiaro. Comunque, in generale, dati $n$ bit il massimo numero che può essere rappresentato è $2^(n-1)-1$, poi chiaramente si possono inserire quanto bit si vuole.

Ma quindi il concetto di complemento a 2 (su $n$ bit) serve solo per poter rappresentare numeri interi negativi in informatica? Per i numeri positivi non cambia nulla (si mettono degli zeri non significativi a sinistra), ma quelli negativi diventano tali per cui, se sommati con i rispettivi moduli, la somma viene una serie di zeri (il riporto si sposta almeno fino al bit $n+1$, per cui non viene registrato nella somma di $n$ bit.

Ad esempio, il complemento a 2 di $12$, su 8 bit, è $00001100$, mentre quello di $-12$ è $11110011$. Se sommo questi due numeri i primi 8 bit sono tutti nulli. Quindi, il concetto di complemento a 2 varia anche in base al numero di bit che si prendono: se considero 6 bit il complemento a 2 di $-12$ diventa $110011$.
$(Z –>)^(90º) – (E–N^2W)^(90º)t = 1$
Avatar utente
HowardRoark
Senior Member
Senior Member
 
Messaggio: 1051 di 1996
Iscritto il: 13/07/2016, 09:02

Re: Rappresentazione numeri negativi in informatica

Messaggioda ghira » 20/05/2024, 12:16

HowardRoark ha scritto:Ad esempio, il complemento a 2 di $12$, su 8 bit, è $00001100$, mentre quello di $-12$ è $11110011$.

Sei sicuro?
Avatar utente
ghira
Cannot live without
Cannot live without
 
Messaggio: 2818 di 4307
Iscritto il: 11/09/2019, 09:36

Re: Rappresentazione numeri negativi in informatica

Messaggioda HowardRoark » 20/05/2024, 12:32

ghira ha scritto:Sei sicuro?

11110100 :D
$(Z –>)^(90º) – (E–N^2W)^(90º)t = 1$
Avatar utente
HowardRoark
Senior Member
Senior Member
 
Messaggio: 1052 di 1996
Iscritto il: 13/07/2016, 09:02

Re: Rappresentazione numeri negativi in informatica

Messaggioda ghira » 20/05/2024, 14:03

HowardRoark ha scritto:Ad esempio, il complemento a 2 di $12$, su 8 bit, è $00001100$,

Il tuo libro cosa dice, esattamente? Per esempio:

https://www.treccani.it/enciclopedia/complemento-a-due_(Enciclopedia-della-Matematica)/

dice "Il complemento a due di un numero è quel numero che sommato al numero di partenza dà un risultato formato di soli 0."
quindi il complemento a due di 1 è 11111. Era questo che intendevo con "Sei sicuro?". Mi rendo conto che la Treccani magari non è il posto ideale per cercare queste cose. C'è anche chi sembra dire che il complemento a due di un numero è la rappresentazione del numero stesso, quindi hmm.
Avatar utente
ghira
Cannot live without
Cannot live without
 
Messaggio: 2819 di 4307
Iscritto il: 11/09/2019, 09:36

Prossimo

Torna a Secondaria II grado

Chi c’è in linea

Visitano il forum: Google [Bot] e 1 ospite