Newsgroup: it.hobby.elettronica.digitale
Titolo: simboli binari e bit di segno

leggendo un articolo riguardante la numerazione binaria, ho letto che
nei numeri binari a 8 bit comprendenti anche i negativi è possibile
esprimere cifre da -128 a +127. Cortesemente, mi potreste spiegare come
si indica il -128? Grazie.


semplice il primo bit indica il segno (+ se è ad 1 mentre - se è a
0....o viceversa a seconda dello standard) per il resto funziona come
il normale binario quindi 2^7 = 128
quindi -128=01111111=1111111
ciao marnodoh


Si usa la notazione detta complemento a 2.
Per ottenere la rappresentazione binaria del numero:
-Prendine il valore assoluto e convertilo in forma binaria senza segno
-Inverti tutti i bit
-Somma 1
Nel tuo caso, per rappresentare -128, devi fare:
-valore assoluto: 128, che in binario senza segno è rappresentato con 
10000000
-inversione dei bit: 01111111
-somma 1: 1000000
10000000 è la rappresentazione in complemento a 2 (su 8 bit) di -128.
Che il risultato sia uguale al numero dipartenza è un caso unico dovuto 
al fatto che hai scelto proprio l'estremo negativo, fai la prova con 
altri valori e vedrai.
Spero di esserti stato utile
ciao

 Che il risultato sia uguale al numero dipartenza è un caso unico dovuto
...
Si deve tenere presente che:
b = -a => a + b = 0
Siccome a = 10000000, quale numero gli si deve sommare, per ottenere 0? 
Proprio (e solo) 10000000:
    10000000 +
    10000000 =
---------------
(1)00000000 si scarta il bit di riporto
    Quindi non è esattamente un caso... ma una necessità ;). Siccome tutti i 
numeri in complemento a due devono dare:
b=-a
a+b = (1/0)00000000
i casi sono ben due: 128 +(-128) e 0+(-0).
Stefano 

 i casi sono ben due: 128 +(-128) e 0+(-0).
Ti stai confondendo, +128, in complemento a 2  su 8 bit non è 
rappresentabile, al massimo su 8 bit rappresenti +127.
Nel tuo esempio è come se avessi fatto -128 +(-128) che chiaramente 
genera un overflow perchè il risultato sarebbe -256 (che peraltro è 
rappresentato correttamente nel risultato se consideri tutti i 9 bit).
La somma di 2 opposti rappresentati in complemento a 2 deve dare 0, 
senza nessun riporto.
Se mischiamo rappresentazione senza segno e complemento a 2, sebbene il 
risultato sia corretto a meno del riporto, poi non possiamo più dare un 
significato univoco al riporto stesso.
Inoltre lo 0 è rappresentato solo con 00000000, non esistono casi 
speciali per il -0 e il +0 come indichi nell'ultima riga.
Il fatto che +128 in binario senza segno a 8 bit sia rappresentato nello 
stesso modo di -128 è legato proprio al fatto che esso non è 
rappresentabile in complemento a 2 su 8 bit, ed è proprio uno in più 
dell'estremo positivo (la codifica si ferma a +127).

 -somma 1: 1000000
Molti convertitori A/D utilizzano la rappresentazione in complemento a 2 
proprio perchè è molto facile eseguire somme. Solo una nota ;)
Emiliano. 

 per il -0 e il +0 come indichi nell'ultima riga.
Era solo per chiarire l'analogia con l'altro esempio. Sommare 0 al suo 
opposto l'ho rappresentato come 0 + (-0), che è ovviamente 0-0 = 0+0. Se 
avessi scritto solo 0 - 0 non sarebbe stato altrettanto evidente che parlavo 
dell'operazione di somma di opposti.
Stefano 

 
Giusto, grazie per la precisazione, mi sono confuso pure io :)