Newsgroup: it.comp.programmare
Titolo: R: binari negativi

 negativo ?
per indicare un numero binario positivo e uno negativo, basta vedere il
primo bit a sinistra che se è 0, allora il numero è positivo, altrimenti
 se è 1 ) è negativo.
Ma attenzione, non ti lasciare ingannare. Questa affermazione è vera se si è
fissata una rappresentazione per quel numero.
Cioè io posso scrivere un numero binario ( sequenza binaria ) che però può
rappresentare benissimo un numero intero positivo, un numero negativo, un
numero reale o quello che mi è passato per la mente.
Voglio dire che se mi invento una mia rappresentazione, la sequenza di 1 e 0
assume un significato che solo io posso interpretare correttamente.
Se ti interessa questo perchè devi fare un compito, vedrai che nel compito
c'è scritto come sono rappresentati i numeri.
Magari c'è scritto che sono in complemento a 2.
E' con il complemento a 2 che trasformi un numero binario positivo in un
numero negativo.
Ad esempio prendiamo il numero 10 positivo.
In binario diventa 1010
E se lo trasformi in negativo ? Bè, secondo la rappresentazione potrebbe
diventare 11010.
Ma facciamo il complemento a 2 ( la convenzione ). Allora il complemento a 2
lo ottieni partendo da 1010 in questo modo:
1010  diventa 0101  ( complemento a 1 )  si ottiene cambiando gli 0 in 1 e
viceversa
0101 diventa 0110 ( complemento a 2 ), si ottiene sommando 1 al complemento
a 1
Ma è errato....anzi, in complemento a 2 è overflow
Allora ripartiamo da 1010, per semplicità trasformiamolo ad 8 bit e diventa
: 00001010 dove il primo bit lo utilizziamo come bit di segno. ( infatti è 0
ed è 10 positivo )
Ora facciamo il complemento a 1 ed il numero diventa:
11110101
facciamo il complemento a 2 che risulta:
11110101 + 1 = 11110110 che è 10 negativo
Infatti il primo bit a sinistra vale 1 ed il numero è negativo. Per fare le
operazioni tra numeri positivi e negativi, puoi utilizzare la
rappresentazione in complemento a 2 per trasformare il numero positivo in
negativo.
Ah.....ritornando sull'overflow, questo lo hai quando il numero di bit
necessari per rappresentare il numero è inferiore al numero di bit dati. Ad
esempio 10 positivo sono 4 bit ( come minimo ) ma trasformandolo in negativo
quei 4 bit non sono più sufficienti. Bè, il range del complemento a 2 è
compreso tra  - 2 ^ ( numero cifre - 1 ) + 1 e  + 2^(numero cifre - 1 ) - 1
cioè il range totale è 2^(numero cifre) - 1
Ok ?
Come ripeto, è solo una questione di rappresentazione !!
Infatti, se tu non sai che il numero 11110110 è in complemento a 2, chi ti
dice che non può essere benissimo 246 decimale ?
Oppure in qualche modo può rappresentare un numero reale ?
Cioè nessuno mi vieta di utilizzare tutti gli otto bit o quanti siano per
rappresentare la parte numerica lasciando sottointeso il segno che fisso a
priori.
Insomma nei linguaggi di programmazione, tutto ciò è riassunto dai tipi di
dato.
Vabbè, ora ti saluto. Mi sono dilungato un po' ma spero di essermi spiegato.
Per ogni dettaglio scrivi pure.....ciaooooo !!!!
Antonio Tarolla



 negativo ?
Se oltre quello che gia' e' stato detto ti puo' servire ho messo qualcosa
su:
http://members.xoom.it/stor/z80/soft1.htm
E' un capitolo di una serie di pagine dedicate alla programmazione dello
Z80, ma la parte riguardante la numerazione binaria positiva e negativa
rappresentabile con 8 o 16 bit vale per tutti i sistemi e linguaggi.
ciao
Claudio

 NG sarete i primi a saperlo ...
benissimo....alle prossime !!
Ciaooo !!!
Antonio Tarolla