Il sistema binario (dal latino binārĭus , “doppio”) è il sistema numerico che utilizza la base 2 . Le cifre del numero binario posizionale sono comunemente chiamate bit ( dall'inglese binary digit , o "binary digit") . Un bit può assumere due valori, indicati per convenzione 0 e 1 .
Il sistema binario è utile per rappresentare il funzionamento dell'elettronica digitale utilizzata nei computer . Viene quindi utilizzato dai linguaggi di programmazione di basso livello .
Il sistema binario più comune è la base matematica due , che consente di rappresentare i numeri utilizzando la numerazione del luogo con solo due cifre: 0 e 1.
In questo tipo di codifica, ogni numero è rappresentato in modo univoco da una sequenza ordinata di cifre . E ogni posizione m rappresenta una potenza ( m - 1) della base . Se ci limitiamo inizialmente agli interi positivi, in base dieci queste potenze sono: uno (1), dieci (rappresentato da 10), cento (dieci per dieci, rappresentato da 100), mille (dieci per cento, rappresentato da 1000), diecimila, ecc. In base due, queste potenze sono: uno (1), due (rappresentato anche da 10), quattro (due per due, rappresentato da 100), otto (due per quattro, rappresentato da 1000), sedici (due per otto, rappresentato per 10.000), ecc.
Vediamo che il significato delle rappresentazioni 10, 100, 1000, ecc. dipende dalla base utilizzata: 10 è sempre uguale alla base, cioè dieci in base dieci, ma due in base due.
In base dieci si usano dieci cifre, da zero a nove; in base n , usiamo n cifre, da zero a n - 1; quindi in base due usiamo le due cifre “0” e “1”.
Un numero che è espresso in base B dalle quattro cifre 1101 può essere analizzato:
, che dà :
1101 in base B = 10: | |||||
1101 in base B = 8: | |||||
1101 in base B = 2: |
I primi numeri, e le cifre della base 10, sono scritti:
decimale | binario | osservazione |
---|---|---|
0 | 0 | zero |
1 | 1 | un = potenza di base zero (valido per tutte le basi, quindi due e dieci) |
2 | 10 | due = due alla potenza di uno (uno zero dietro l'1) |
3 | 11 | |
4 | 100 | quattro = due alla potenza di due (due zeri dietro l'1) |
5 | 101 | |
6 | 110 | |
7 | 111 | |
8 | 1000 | otto = due alla potenza di tre (tre zeri dietro l'1) |
9 | 1001 |
Diamo a ogni bit una potenza di due, come questa sequenza 1, 2, 4, 8, 16, 32, 64. Per ottenere il numero 7, aggiungiamo i primi tre bit; per ottenere 6 aggiungiamo solo la punta con peso 4 e la punta con peso 2.
Le tecniche delle quattro operazioni fondamentali (addizione, sottrazione, moltiplicazione e divisione) rimangono esattamente le stesse della notazione decimale; sono solo drasticamente semplificati perché ci sono solo le due cifre 0 e 1. Per la moltiplicazione, ad esempio, qualunque sia la base, la moltiplicazione per 10 (cioè per la base stessa) viene eseguita aggiungendo uno zero a destra.
Gli unici cambiamenti che cambiano da un lato la forma della sequenza di cifre che esprime il risultato (conta solo zeri e uno), dall'altro il significato di questa sequenza (10 significa "due" e non "dieci", 100 significa “quattro” e non “cento”, ecc.).
Addizione e sottrazioneSi passa da un numero binario al successivo aggiungendo 1, come in decimale, senza dimenticare le prese e utilizzando la tabella ordinaria (ma ridotta alla sua espressione più semplice):
0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 avec 1 retenue 0 - 0 = 0 0 - 1 = 1 avec 1 retenue 1 - 0 = 1 1 - 1 = 0Si può vedere che l'aggiunta di due bit A e B dà A XOR B con un riporto uguale a A AND B.
In tal modo :
11 + 1 ____ 100Dettaglio :
1 + 1 = 10 => on pose 0 et on retient 1 1 + 1(retenue) = 10 => on pose 0 et on retient 1 0 + 1(retenue) = 1 => on pose 1 devant 00La moltiplicazione per due viene eseguita spostando ogni cifra di un passo a sinistra e inserendo uno zero alla fine.
Ad esempio, due volte undici:
L'intera divisione per due viene eseguita spostando ogni cifra di un passo a destra, la cifra di destra viene rimossa dal resto.
Ad esempio undici diviso due:
L'aritmetica binaria (più semplicemente calcolo binario) è utilizzata dai più comuni sistemi elettronici (calcolatrici, computer, ecc.) perché le due cifre 0 e 1 vi sono riflesse dalla tensione o dal passaggio di una corrente. Ad esempio, 0 può essere rappresentato dallo stato basso (tensione o corrente nulla) e 1 dallo stato alto (tensione che esiste, corrente che scorre).
Per completare la rappresentazione degli interi è necessario saper scrivere interi negativi . Esistono due rappresentazioni, il complemento a uno e il complemento a due.
Complemento ad aQuesta codifica consiste nell'invertire il valore di ogni bit.
Ad esempio per ottenere -7:
Un difetto di questo sistema è che lo zero ha due rappresentazioni: 0000 e 1111 ("+0" e "-0"). Non è utilizzato dai computer attuali, ma è stato utilizzato da computer più vecchi come Control Data 6600 . Le due rappresentazioni dello zero complicano i circuiti di prova.
Complemento per dueIl complemento a due consiste nell'eseguire un complemento a uno, aggiungendo poi 1.
Ad esempio per ottenere -7:
Questa codifica ha il vantaggio di non richiedere particolari differenziazioni di numeri positivi e negativi, ed in particolare evita il problema della doppia rappresentazione dello zero.
Ecco un'aggiunta di -7 e +9 eseguita come complemento a due a 4 bit:
-7 1001 +9 1001 __ ____ 2 (1) 0010 (on « ignore » la retenue)Con n bit, questo sistema permette di rappresentare i numeri compresi tra -2 n -1 e 2 n -1 - 1.
Le basi 8 (ottale) e 16 (esadecimale) sono basi di potenza della base 2. Queste due basi sono comunemente usate nell'informatica e per ragioni pratiche; queste basi essendo fortemente legate alla base 2 ed i numeri scritti in queste basi essendo più "manipolabili" (a causa della scrittura più corta) dall'intelletto umano. La scrittura dei numeri in queste basi si ottiene facilmente raggruppando le cifre dalla scrittura del numero alla base 2.
Potremmo facilmente estendere questo principio a tutte le basi che sono potenze di 2.
in binarioÈ sufficiente convertire il valore di ciascuna delle cifre nella loro forma binaria utilizzando un numero di cifre corrispondente alla potenza della base: 16 = 2 4 , 8 = 2 3 , quindi 4 cifre per l'esadecimale e 3 per l'ottale:
|
|
Il codice Gray, chiamato anche binario riflesso, consente la modifica di un solo bit alla volta quando un numero viene incrementato o decrementato di uno. Il nome del codice deriva dall'ingegnere americano Frank Gray , che ha depositato un brevetto su questo codice nel 1947.
Per calcolare direttamente il codice Gray di un intero da quello del suo predecessore, si può procedere come segue:
Per conciliare la logica binaria del computer con la logica umana, si può convertire in binario, anziché i numeri stessi, ciascuna delle cifre che le compongono in notazione posizionale decimale. Ognuna di queste cifre viene poi codificata su 4 bit:
1994 = 0001 1001 1001 0100 1×1000 + 9×100 + 9×10 + 4×1Con n bit (n multiplo di 4) è possibile rappresentare i numeri compresi tra 0 e 10 n / 4 -1. Vale a dire approssimativamente tra 0 e 1.778 n -1. Il DCB è un codice ridondante, infatti alcune combinazioni non vengono utilizzate (come ad esempio 1111).
Questa rappresentazione evita per costruzione tutti i fastidiosi problemi di accumulo di arrotondamento che si verificherebbero durante la manipolazione di grandi numeri eccedenti la dimensione dei circuiti in aritmetica intera e obbligando a ricorrere al galleggiante. Tuttavia, è possibile manipolare i numeri con precisione arbitraria utilizzando una codifica più efficiente rispetto a DCB.
Esistono varianti della codifica DCB:
Nella teoria dell'informazione , l' entropia di una fonte di informazione è espressa in bit . La teoria stessa è indifferente alla rappresentazione delle quantità che usa.
La logica classica è una logica bivalente: una proposizione è vera o falsa. È quindi possibile rappresentare la verità di una proposizione con un numero binario. Ad esempio, possiamo modellare le operazioni dell'aritmetica binaria usando l'algebra booleana .
L'algebra di Boole rappresenta un caso molto particolare di utilizzo di probabilità che coinvolgono solo i soli valori di verità 0 e 1. Vedi teorema di Cox-Jaynes .
Il binario viene utilizzato nell'elaborazione dei dati perché consente di modellare il funzionamento dei componenti di commutazione come il TTL o il CMOS . La presenza di una soglia di tensione ai capi dei transistor, trascurando il valore esatto di tale tensione, rappresenterà 0 o 1. Ad esempio il numero 0 verrà utilizzato per indicare un'assenza di tensione entro 0,5 V , e il numero 1 per indicarne la presenza superiore a 0,5 V . Questo margine di tolleranza permette di spingere le rate dei microprocessori a valori che raggiungono diversi gigahertz .
In informatica , la rappresentazione binaria permette di manipolare chiaramente i bit : ogni cifra binaria corrisponde a un bit. Tuttavia, poiché la rappresentazione binaria richiede l'utilizzo di molte cifre (anche per numeri abbastanza piccoli), comporta notevoli problemi di leggibilità e quindi rischi di errori di trascrizione per i programmatori. Si preferiscono quindi altre rappresentazioni : la notazione esadecimale, che permette di manipolare informazioni in pacchetti di 4 bit, è adatta a quasi tutti gli attuali microprocessori che lavorano con parole di 8, 16, 32 o 64 bit; più raro, punteggio ottale , tempo popolare dei primi minicomputer DEC a 12 o 36 bit, che possono rappresentare informazioni in pacchetti da 3 bit.