Re: Rappresentazione numeri negativi in informatica

Messaggioda HowardRoark » 20/05/2024, 15:00

ghira ha scritto:Il tuo libro cosa dice, esattamente?


Non dà una definizione, questo concetto salta fuori in un paragrafo per rappresentare i numeri interi relativi (con segno) e ci si limita a dare le regole operative per determinare il complemento a 2 di un numero.

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

Per ora mi farò andare bene questa definizione. Considera che ho comprato questo libro solo per studiare qualcosa di programmazione su python, io però sono partito a leggerlo dall'inizio e quindi incappo anche in questi concetti, che presumo comunque essere fondamentali.
$(Z –>)^(90º) – (E–N^2W)^(90º)t = 1$
Avatar utente
HowardRoark
Senior Member
Senior Member
 
Messaggio: 1053 di 1748
Iscritto il: 13/07/2016, 09:02

Re: Rappresentazione numeri negativi in informatica

Messaggioda ghira » 20/05/2024, 18:24

HowardRoark ha scritto:ho comprato questo libro solo per studiare qualcosa di programmazione su python, io però sono partito a leggerlo dall'inizio e quindi incappo anche in questi concetti, che presumo comunque essere fondamentali.

Se progetti i microprocessori o scrivi in assembly, sapere esattamente come funziona il complemento a due potrebbe essere utile. O se scrivi programmi dove manipoli direttamente i bit, come in https://www.youtube.com/watch?v=p8u_k2LIZyo magari, ma secondo me potresti programmare in python per tutta la vita senza avere bisogno di sapere come funziona il complemento a due.

Magari qualcuno più informatico di me vede le cose diversamente.
Avatar utente
ghira
Cannot live without
Cannot live without
 
Messaggio: 2820 di 4038
Iscritto il: 11/09/2019, 09:36

Re: Rappresentazione numeri negativi in informatica

Messaggioda HowardRoark » 21/05/2024, 18:59

Senza aprire un altro thread, ho un altro dubbio su questo complemento a 2. Il libro mi chiede di rappresentare $154$ in complemento a 2 su 8 bit. Ma $154_10 = 10011010_2$, cioè occupa già 8 bit e non mi entrerebbe il bit di segno. Quindi, il numero di bit minimo per poterlo rappresentare in complemento a 2 sarebbero 9 bit (e allora il complemento a 2 sarebbe $010011010_2$.
Poi il testo mi chiede "qual è il valore binario rappresentato, se si interpreta il numero come binario puro?
Anche qui non capisco: il complemento a 2 di un numero positivo è uguale al modulo del numero con $0$ come bit iniziale, che indica il segno, il valore binario rappresentato sarebbe quindi sempre 154.
Ultima modifica di HowardRoark il 21/05/2024, 20:34, modificato 1 volta in totale.
$(Z –>)^(90º) – (E–N^2W)^(90º)t = 1$
Avatar utente
HowardRoark
Senior Member
Senior Member
 
Messaggio: 1056 di 1748
Iscritto il: 13/07/2016, 09:02

Re: Rappresentazione numeri negativi in informatica

Messaggioda ghira » 21/05/2024, 20:13

HowardRoark ha scritto: il complemento a 2 di un numero $n>0$ e di $-n$ penso siano uguali.


Non capisco. Perché?
Avatar utente
ghira
Cannot live without
Cannot live without
 
Messaggio: 2823 di 4038
Iscritto il: 11/09/2019, 09:36

Re: Rappresentazione numeri negativi in informatica

Messaggioda HowardRoark » 21/05/2024, 20:42

ghira ha scritto:
Non capisco. Perché?

Ho sbagliato, ho corretto perché non aveva senso che avessero lo stesso complemento a 2. Più che altro, il libro dà solo un modo per calcolarlo ma non dice cosa sia; adesso quindi guardo dei video su internet, sperando di schiarirmi le idee.
$(Z –>)^(90º) – (E–N^2W)^(90º)t = 1$
Avatar utente
HowardRoark
Senior Member
Senior Member
 
Messaggio: 1057 di 1748
Iscritto il: 13/07/2016, 09:02

Re: Rappresentazione numeri negativi in informatica

Messaggioda axpgn » 21/05/2024, 20:48

Sinceramente guardando a destra e a manca ti stai complicando la vita inutilmente; quella è solo una convenzione supportata certamente da una teoria matematica solida ma solo una convenzione.
Prenditi un libro anzi continua con quello che stai usando e comprendi bene quello. Punto. IMHO.


Cordialmente, Alex
axpgn
Cannot live without
Cannot live without
 
Messaggio: 22011 di 40757
Iscritto il: 20/11/2013, 22:03

Re: Rappresentazione numeri negativi in informatica

Messaggioda ghira » 21/05/2024, 21:00

Se vuoi imparare il Python, impara il Python, da un libro sul Python. Non saprei dirti quale perché non conosco il Python.

E se vuoi imparare l'informatica, non usare un libro della scuola secondaria.

Sapere come funziona il complemento a due mi sembra un argomento decisamente marginale nel 2024 per chi vuole programmare in Python, o onestamente per più o meno chiunque. Puoi benissimo fregartene.
Avatar utente
ghira
Cannot live without
Cannot live without
 
Messaggio: 2824 di 4038
Iscritto il: 11/09/2019, 09:36

Messaggioda Noodles » 22/05/2024, 09:25

HowardRoark ha scritto:... mi farò andare bene questa definizione.

Qualunque sia la base, le definizioni sono due:

Numero di cifre

$n$

Limitazioni

$0 lt= x lt= b^n-1$

Complemento alla base

$b^n-x$

Complemento alla base meno uno

$b^n-1-x$

Per esempio:

Base

$10$

Numero di cifre

$3$

Complemento a 10

$1000-x$

Complemento a 9

$999-x$


Base

$2$

Numero di cifre

$8$

Complemento a 2

$256-x$

Complemento a 1

$255-x$

Insomma, le regole pratiche per determinare il complemento alla base e il complemento ala base meno uno devono rispettare le definizioni di cui sopra.

HowardRoark ha scritto:... mi chiede di rappresentare $154$ in complemento a 2 su 8 bit.

Si tratta di un esercizio che non ha nulla a che fare con la rappresentazione dei numeri negativi:

$256-154=102=01100110$

Il motivo per cui le definizioni di complemento alla base e di complemento alla base meno uno possano essere convenienti per rappresentare i numeri negativi è un passo successivo.
Noodles
Junior Member
Junior Member
 
Messaggio: 278 di 293
Iscritto il: 23/01/2023, 17:06

Re: Rappresentazione numeri negativi in informatica

Messaggioda HowardRoark » 22/05/2024, 11:15

Grazie per la risposta noodles, alla fine, anche guardando alcuni video, sono riuscito a schiarirmi le idee. Come ha detto axpgn, penso si tratti di una convenzione questa cosa dei complementi1 e forse non ha neanche troppo senso perderci così tanto tempo.
Riguardo il complemento a 2 su 8 bit, ho capito che:

1) ci sono 256 possibili combinazioni ($2^8$), e che il range varia da $-128$ a $+127$.
2) Il bit più significativo corrisponde a $-128$: per questo, tutti i binari che hanno 1 come bit più significativo sono negativi e il numero più negativo rappresentabile è appunto $10000000 = -128$. Il numero maggiore sarà quindi $01111111_2 = 127_10$.
Poi le operazioni sono abbastanza semplici, così come capire l'overflow e l'underflow. Per quello che devo saperne io credo sia abbastanza, se poi dovessi incontrare altre difficoltà allora rivedrò ancora il concetto.

Note

  1. per quello che ho capito io si tratta solo di un modo per rappresentare e per operare con i numeri negativi in un range che dipende dal numero di bit che scegli di usare
$(Z –>)^(90º) – (E–N^2W)^(90º)t = 1$
Avatar utente
HowardRoark
Senior Member
Senior Member
 
Messaggio: 1058 di 1748
Iscritto il: 13/07/2016, 09:02

Messaggioda Noodles » 22/05/2024, 11:46

In parole povere ti consente di eseguire l'operazione sottostante:

$x_1+x_2$

utilizzando, solo per fare un esempio, 8 bit:

$-128 lt= (x_1+x_2)_10 lt= 127$

senza ulteriori complicazioni dovute al segno:

1. Se il bit più significativo è 0 la somma è positiva e, per determinarne il valore, non è necessario farne il complemento a due.

2. Se il bit più significativo è 1 la somma è negativa e, per determinarne il valore, è necessario farne il complemento a due.
Noodles
Junior Member
Junior Member
 
Messaggio: 279 di 293
Iscritto il: 23/01/2023, 17:06

PrecedenteProssimo

Torna a Secondaria II grado

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite