PDA

Visualizza la versione completa : [C] Numeri signed/unsiged e complemento a due


ramy89
19-03-2011, 17:02
Se io ho un numero intero signed, cioè avente il segno,che se rappresentato con 8 bit può essere ad esempio 10,lo rappresento con:


0 000 1010

Per trasformarlo in -10 basta fare il complemento a 2, non ho capito perchè allora non si usa un 1 per rappresentare il segno positivo.
Si potrebbe rappresentare con:


1 000 1010

E poi complementandolo a 2 si avrebbe lo stesso risultato.

lolide
19-03-2011, 17:09
Il complemento a due evita che ci siano 2 numeri che possano rappresentare lo 0.
Se cambiassi solamente il bit del segno, avresti uno 0 negativo ed uno positivo.

Con il complemento a due c'è solo uno zero che è positivo, ed un numero negativo in più.

menphisx
19-03-2011, 17:22
Con il complemento a due si possono fare le sottrazioni come addizioni.
Se vuoi fare 5 - 3, basta fare il complemento a due di 3, sommarlo a 5, e si ottiene 2, con resto di uno, la sottrazione è un'operazione molto complicata per il processore, da quel che so'....

Marco.

Loading