Tutorials - Informatica

 

Decimali, Binari & C

Numeri binari e bit


 

Numeri Binari e Bit

Abbiamo già detto che le cifre di una numerazione binaria prendono il nome di bit.
Se vogliamo rappresentare in modo grafico la corrispondenza delle colonne e del loro valore :

colonna 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
bit 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
^2 216 215 214 213 212 211 210 29 28 27 26 25 24 23 22 21 20
decimale 65535 32768 16384 8192 4096 2048 1025 512 256 128 64 32 16 8 4 2 1

Possiamo notare come, parlando di colonne, diciamo la prima, la seconda, ecc. Mentre parlando di bit, il bit più a destra non è il bit 1 ma il bit 0.
Questo è facilmente comprensibile osservando che la serie delle potenze di due corrispondenti alle colonne parte da 0 ( 20 = 1); è ragionevole quindi che anche il bit corrispondente abbia una numerazione analoga.

Dunque,in un insieme di bit

il primo bit a destra non è il bit 1, ma è il secondo; il primo bit è il bit 0.

E il primo bit a sinistra di un byte (8 bit) non è il bit 8, ma il bit 7 (il suo esponente di posizione è 7 e il suo valore va moltiplicato per 27).

Dunque è chiara la corrispondenza del valore in una colonna con il bit corrispondente in un insieme di bit.

Per ragioni pratiche e logiche, gli insiemi di bit, nell' organizzazione di un computer, non sono casuali, ma sono raggruppamenti di 4, 8, 16, 32, 64 o più bit, a gruppi che sono potenze di 2..
In particolare, nei microcontroller si utilizzano gruppi di 8 o 16 bit.

Un gruppo di 8 bit prende il nome di "byte"

E questo insieme di bit organizzati solitamente a gruppi di 8 (= 1 byte) costituiscono i registri del processore, le celle di memoria, i port di I/O.

8 bit = 1 byte

per curiosità il nome byte deriva dall' inglese bite (che significa un pezzo, nel parlare comune, più grande di un bit) e rinominato con la y per evitare confusioni.

Dunque, se in un registro di memoria del processore voglio scrivere il numero decimale 100, lo devo convertire in binario, il che da 1100100 ed è questo quanto sarà scritto nella locazione di memoria.
In che modo ?
Facendo corrispondere ad ogni 1 una tensione elettrica "a livello alto", ad esempio 5 volt e ad ogni 0 una tensione logica "a livello basso", ad esempio zero volt.
Dunque, il nostro registro di memoria contiene otto celle in ognuna delle quali viene portata a 5 volt oppure a zero volt.

Registro memoria 5 V 5 V 0 V 0 V 5 V 0 V 0 V 0 V

Le celle sono ordinate dalla prima a destra all' ottava a sinistra, nel modo che abbiamo già visto per i numeri binari. Sono otto e quindi possiamo definire questo insieme "un byte" e chiamare ogni cella "un bit":

Colonna 8 7 6 5 4 3 2 1
Bit 7 6 5 4 3 2 1 0
Registro memoria 5 V 5 V 0 V 0 V 5 V 0 V 0 V 0 V

Ma i livelli di tensione contenuti in ogni cella non sono che l' equivalente elettrico delle cifre binarie, Allora sostituisco questi valori con le cifre corrispondenti:

Colonna 8 7 6 5 4 3 2 1
Bit 7 6 5 4 3 2 1 0
Registro memoria 5 V 5 V 0 V 0 V 5 V 0 V 0 V 0 V
Binario equivalente 1 1 0 0 1 0 0 0

Ecco come con i numeri binari posso rappresentare la situazione di un circuito elettrico e, viceversa, rendere nel circuito elettrico una serie di cifre binarie.

La stessa cosa vale per i registri di ingresso e di uscita del microcontroller. In questo caso faccio corrispondere ogni cella (ogni bit) del registro con un piedino del processore, accessibile dall' esterno: il livello interno della tensione sarà riportato all' esterno.

Bit 7 6 5 4 3 2 1 0
Valore 1 1 0 0 1 0 0 0
Registro memoria 1 1 0 0 1 0 0 0
Pin dell' I/O 1 1 0 0 1 0 0 0
Pin 5 V 5 V 0 V 0 V 5 V 0 V 0 V 0 V

Ecco come si equivalgono stati elettrici e numeri binari.

Se, con il circuito esterno, faccio si che quando la tensione sul pin è a 5 V si accenda un LED, che invece è spento quando il livello è 0 V, trasformo la sequenza di bit binari in una sequenza di stati elettrici che comandano dispositivi: 

Bit 7 6 5 4 3 2 1 0
Valore 1 1 0 0 1 0 0 0
I/O port 1 1 0 0 1 0 0 0
Pin 5 V 5 V 0 V 0 V 5 V 0 V 0 V 0 V
LED

Ovviamente posso fare anche un circuito che faccia l' inverso, ovvero accenda il LED quando il pin è a 0, ma per ora questo è poco importante. E per ora non è neppure indispensabile conoscere come sia il processo che porta a 5 V o a 0 V la tensione nei registri. Quello che importa, ora, è cominciare a capire il meccanismo che rende la numerazione binaria immagine dello stato di un circuito elettrico.

Quello che importa è comprendere che questa equivalenza:

numero binario - registro del processore - stato elettrico 

che è poi quello su cui si basa l' elaborazione elettronica e l' automazione con i processori.

Si può dire certamente che un sistema binario, a parte per il prof. XvYzz e per la sua pinza, parrebbe assolutamente insensato. Ma non è così.

Infatti, se consideriamo che 

un sistema binario si adatta perfettamente a descrivere il funzionamento di un circuito elettrico
  1 = acceso, 0 = spento. 

E i computer sono circuiti elettrici. Anzi, i primi elaboratori matematici erano a relè (contatto aperto / contatto chiuso).

Questa considerazione trova supporto fondamentale nel lavoro del matematico-filosofo George Boole (1815-1864). Egli considerava possibile applicare alla logica le leggi e simboli dell' algebra, dando origine ad una branca della matematica che viene chiamata Algebra di Boole o booleana. e che costituisce la base dei successivi lavori di De Morgan, Shannon, Turing e su cui si basa il calcolo elettronico.

Se per noi le catene di 1 e 0 che costituiscono i numeri binari sono di difficile maneggio, questo non è per le macchine, la cui possibilità di effettuare miliardi di operazioni semplici al secondo rende poco significativa l' apparente scomodità del sistema binario.

In un processore a 8 bit, i dati sono organizzati su 8 bit e così pure periferiche e port sono organizzati su 8 bit. 
Ad ogni bit posso assegnare il livello alto o basso, 1 o 0. 
Quindi un gruppo di 8 bit può essere rappresentato dalle cifre binarie 00000000 se tutti i bit sono a zero per arrivare fino a 11111111 quando tutti i bit valgono 1. 

Ma abbiamo detto che: 

possiamo collegare un circuito acceso, o un livello logico alto, alla cifra 1
 
e un circuito spento, o a livello basso, alla cifra 0.

Il collegare nella realtà questi 1 e 0 a livelli di tensione, fa si che, ad esempio, il livello di tensione alto,  rappresentato con 1, faccia accendere una lampadina e il valore 0, basso, la faccia spegnere : è il principio del controllo attraverso l' elettronica.

Abbiamo detto che facciamo equivalere 1 a 5 V, ma questo è solo un esempio, in quanto il "livello logico alto" potrà assumere valori differenti a seconda della tensione con cui alimentiamo il circuito (e delle caratteristiche costruttive).
Per cui, invece di parlare di volt, lo stato dei bit viene definito con altri termini equivalenti :

1 alto H set acceso
0 basso L clear spento

Per cui la tabella più sopra potrà essere riscritta così:

Bit 7 6 5 4 3 2 1 0
Valore 1 1 0 0 1 0 0 0
I/O port 1 1 0 0 1 0 0 0
Pin H H L L H L L L
LED

A seconda del numero di bit disponibili si potranno immagazzinare, come già detto, numeri differenti e azionare gruppi di linee corrispondenti.  Ad esempio, con 4 bit, potranno variare tra 0000 e 1111. Se ci attacco i LED, questi saranno tutti spenti quando le linee sono a 0 e tutti accesi quando le linee sono a 1.

bit3 bit2 bit1 bit0

Stato

0 0 0 0 tutti spenti
1 1 1 1 tutti accesi

Certamente avrò anche tutte le possibili combinazioni intermedie :.

bit3 bit2 bit1 bit0 BIT  Accesi
0 0 0 0 tutti spenti
0 0 0 1 bit 1
0 0 1 0 bit 2
0 0 1 1 bit 1 e 2 
0 1 0 0 bit 3 
0 1 0 1 bit 3 e 1
0 1 1 0 bit 3 e 2
0 1 1 1 bit 3, 2 , 1
1 0 0 0 bit 4
1 0 0 1 bit 4 e 1
1 0 1 0 bit 4 e 2
1 0 1 1 bit 4, 2, 1
1 1 0 0 bit 4 e 3
1 1 0 1 bit 4, 3, 1
1 1 1 0 bit 4, 3, 2
1 1 1 1 tutti accesi

E così via per altri raggruppamenti di bit.
Se fino a qui è tutto chiaro, possiamo confondere le cose dicendo che la parola byte non si associa solo a gruppi di 8 bit, anche se questo è il significato più diffuso, ma si applica a qualsiasi sequenza ordinata di bit. Per cui si può parlare di byte anche se i gruppi sono da 5 (come nella codifica Baudot) o 9 o 10 come in una trasmissione RS-232, oppure con l'architettura del processore, che può essere stato costruito per lavorare con gruppi di 12 o 14 o più bit..

Comunque, si è deciso di utilizzare nomi specifici per i raggruppamenti di bit maggiori.

Si chiama 

word ("parola") un gruppo di 2 byte

double word o dword, un gruppo di 2 word, ovvero 4 bytes

Anche qui l valore esatto in bit varia con l'architettura. In sistemi con il byte = 8 bit, si avrà:

1 word = 2 byte = 16 bit

1 dword = 2 word = 4 byte = 32 bit

Così un qword o quad word (abbreviazione di quadruple word) è pari al quadruplo di una word.

Per curiosità, in inglese il plurale di bit è bits e di byte è bytes e di word è words, ma è in uso non impiegare questi plurali quando si scrive in italiano.
Altra curiosità è che in francese la terminolgia anche tecnica deve essere per legge "riportata" a un termine francese, per cui il byte diventa un octet (ma, d'altronde, il computer a Parigi è un ordinateur e un software diventa un logiciel...)


 

 

 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 17/10/10.