Fondamenti di informatica 1/Metodi di rappresentazione dei numeri binari: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
incollo da http://it.wikipedia.org/w/index.php?title=Sistema_numerico_binario&oldid=49541397 (versione delle 18:38, 13 mag 2012), taglio alcune parti, e aggiungo cat e avanzamento
 
m adatto
Riga 1:
I numeri binari, in campo informatico, non sono utilizzati esclusivamente per memorizzare numeri interi positivi: ma, mediante alcune convenzioni, è possibile scrivere numeri binari con segno e parte decimale senzausando introdurresolo nuovii caratterisimboli (come la virgola"0" e il segno meno, non memorizzabili su di un byte)"1".
Il '''sistema numerico binario''' è un [[sistema numerico]] posizionale in base 2, cioè che utilizza 2 simboli, tipicamente 0 e 1, invece dei 10 del sistema numerico decimale tradizionale. Di conseguenza, la cifra in posizione <math>n</math> (da destra) si considera moltiplicata per <math>2^{(n-1)}</math> anziché per <math>10^{(n-1)}</math> come avviene nella numerazione decimale.
 
=== Rappresentazione in modulo e segno ===
Nella seguente tabella sono confrontate le rappresentazioni binarie, [[sistema numerico esadecimale|esadecimali]] e [[sistema numerico decimale|decimali]] di alcuni numeri:
Questo è il modo più semplice per rappresentare e distinguere numeri positivi e negativi: al numero binario vero e proprio viene anteposto un [[bit]] che, per convenzione, assume il valore 0 se il numero è positivo ed assume il valore 1 se il numero è negativo. Il grande difetto di questa rappresentazione è quello di avere due modi per scrivere il numero 0: 00000000 e 10000000 significano infatti +0 e -0.
 
=== Rappresentazione in complemento a due ===
{|class="prettytable" style="text-align: center"
Questo metodo di rappresentazione ha notevoli vantaggi, soprattutto per effettuare somme e differenze: in pratica ai numeri viene anteposto un bit di valore zero; se poi il numero è negativo è necessario convertirlo in [[Complementocomplemento a due|complemento a 2]]: per farlo è sufficiente leggere il numero da destra verso sinistra e invertire tutte le cifre a partire dal primo bit uguale a 1 (escluso). Per fare un esempio:<br/>
|Binario
|Esadecimale
|Decimale
|-
|0
|0
|0
|-
|1
|1
|1
|-
|10
|2
|2
|-
|11
|3
|3
|-
|100
|4
|4
|-
|101
|5
|5
|-
|110
|6
|6
|-
|111
|7
|7
|-
|1000
|8
|8
|-
|1001
|9
|9
|-
|1010
|A
|10
|-
|1011
|B
|11
|-
|1100
|C
|12
|-
|1101
|D
|13
|-
|1110
|E
|14
|-
|1111
|F
|15
|}
 
Il sistema numerico binario è usato in [[informatica]] per la rappresentazione interna dei numeri, grazie alla semplicità di realizzare fisicamente un elemento con due stati anziché un numero di stati superiore, ma anche per la corrispondenza con i valori [[logica|logici]] di vero e falso.
 
Il sistema numerico binario ha molti ''padri''. Il primo a proporne l'uso fu [[Juan Caramuel y Lobkowitz|Juan Caramuel]] con la pubblicazione del volume "Mathesis biceps. Vetus, et noua" pubblicato a [[Campagna (comune)|Campagna]] nel 1669. Se ne trova traccia anche nelle opere di [[Nepero]]. Successivamente, il matematico tedesco [[Gottfried Wilhelm Leibniz]] ne studiò per primo l'[[aritmetica]]. Questa è la ragione per cui questo sistema di numerazione è considerato tra le sue più grandi invenzioni. Però non ebbe un seguito immediato. L'aritmetica binaria venne ben presto dimenticata e riscoperta solo nel [[1847]] grazie al matematico inglese [[George Boole]] che aprirà l'orizzonte alle grandi scuole di logica matematica del '900 e soprattutto alla nascita del [[computer|calcolatore elettronico]].
 
La formula per convertire un numero da binario a decimale (dove con ''d '' si indica la cifra di posizione ''n'' all'interno del numero, partendo da 0) è
<center><math>d_{(n)}2^{(n)} ... + d_02^0 = N_{10}</math></center>
 
Ad esempio <math>1001_2 = 1*2^3+0*2^2+0*2^1+1*2^0 = 9_{10}</math>
 
== Rappresentazioni di numeri binari ==
I numeri binari, in campo informatico, non sono utilizzati esclusivamente per memorizzare numeri interi positivi ma, mediante alcune convenzioni, è possibile scrivere numeri binari con segno e parte decimale senza introdurre nuovi caratteri (come la virgola e il segno meno, non memorizzabili su di un byte).
 
=== Rappresentazione in modulo e segno ===
Questo è il modo più semplice per rappresentare e distinguere numeri positivi e negativi: al numero binario vero e proprio viene anteposto un [[bit]] che, per convenzione, assume il valore 0 se il numero è positivo ed assume il valore 1 se il numero è negativo. Il grande difetto di questa rappresentazione è quello di avere due modi per scrivere il numero 0: 00000000 e 10000000 significano infatti +0 e -0.
 
=== Rappresentazione in complemento a due ===
{{Vedi anche|Complemento a due}}
Questo metodo di rappresentazione ha notevoli vantaggi, soprattutto per effettuare somme e differenze: in pratica ai numeri viene anteposto un bit di valore zero; se poi il numero è negativo è necessario convertirlo in [[Complemento a due|complemento a 2]]: per farlo è sufficiente leggere il numero da destra verso sinistra e invertire tutte le cifre a partire dal primo bit uguale a 1 (escluso). Per fare un esempio:<br/>
<center><math>-12_{10} = -01100_2 = 10100_{CA2} </math></center>
Come è possibile notare seguendo questo metodo il primo bit diventa automaticamente il bit del segno (come per il metodo precedente). Viene però risolto il problema dell'ambiguità dello 0 (in complemento a 2 00000 e 10000 hanno significati diversi) e vengono enormemente facilitate le operazioni di somma e differenza, che si riducono alla sola operazione di somma: per spiegare meglio basta fare un esempio:<br/>
<center><math>5_{10} - 10_{10} = 5_{10} + (-10)_{10} = 0101_2 - 1010_2 = 00101_{CA2} + 10110_{CA2} = 11011_{CA2} = -00101_2 = -5_{10}</math></center>
 
=== Rappresentazione in virgola mobile P754===
Esistono innumerevoli modi per rappresentare numeri in virgola mobile ma il sistema più utilizzato è lo standard IEEE P754; questo metodo comporta l'utilizzo della notazione scientifica, in cui ogni numero è identificato dal segno, da una [[mantissa]] (1,xxxxx) e dall'esponente (<math>n^{yyyyy}</math>).
La procedura standard per la conversione da numero decimale a numero binario P754 è la seguente:
#Prima di tutto il numero, in valore assoluto, va convertito in binario.