ATTENZIONE! ECCEZIONALE PROMOZIONE ESTIVA - SCONTO 50% SU TUTTI I CORSI MC2.IT - SOLO DAL 1 AL 31 AGOSTO 2014 (vedi colonna di destra)

Logo Einstein grigio sfumato
e = m x c al quadrato

Bit e Byte cosa sono

Bit e Byte vediamo di capire le fondamenta del linguaggio e dell'aritmetica binaria del PC




In questo tutorial verranno esaminati i concetti di base relativi alla gestione dei dati da parte del computer, ovvero a quell’attività che costituisce il vero nucleo del suo funzionamento.

Il PC parla un linguaggio fatto di sole 2 cifre: ‘0’ e ‘1’ : gli ‘stati’ del BIT (da Binary Digit)   Bit 1Bit 0

    A livello di Elettronica questi due ‘Stati’ corrispondono a “circuito aperto” (corrente elettrica assente ) e “circuito chiuso” (corrente elettrica di pochi ‘volt’)
circuito apertocircuito chiuso
Mentre noi umani contiamo con 10 dita, il PC ne usa solo 2: un gruppo di 8 Bit (corrispondente a 8 circuiti otransistori in sequenza) è detto Byte (o Parola) ed è rappresentato così:  


  I pesi altro non sono che lepotenze del ‘2’ a partire da destra dall’esponente ‘0’ fino all’esponente ‘7’. I Bit vanno moltiplicati per il loro peso e quindi sommati. Quindi il numero binario 01101001 corrisponde al decimale 105:

  Pesi e bits
Infatti se moltiplichiamo (128*0) + (64*1) + (32*1) + (16*0) + (8*1) + (4*0)+ (2*0) + (1*1) otteniamo il numero decimale 105,  è  01101001 è la sua rappresentazione binaria,
Potenze del 2

BIT, BYTE E CARATTERI

La componente elementare dei dati gestiti dal computer, l’unità più piccola e fondamentale, è chiamata bit.

La parola “bit” è un’abbreviazione dell’espressione binary digit (cifra binaria).

Di norma, per comporre i numeri, ci si serve delle 10 cifre (dallo 0 al 9) impiegate nel sistema decimale.

Le cose funzionano in modo analogo con le cifre binarie, i bit; in questo caso ci si serve di due sole cifre per comporre qualsiasi numero. Queste cifre sono lo zero e l’uno, che si indicano, esattamente come nel sistema decimale, con i simboli O e 1.

Le cifre binarieO ed 1 possono averevari significati: spento e acceso, falso e vero, no e sì. Inoltre esse hanno il valore numerico che si è portati ad attribuire loro intuitivamente:

O significa zero, o nulla, e 1 significa uno. Si è visto che il concetto di bit è uno degli strumenti che hanno reso possibile la realizzazione di macchine capaci di elaborare informazioni, ovvero i computer.

Infatti si possono realizzare macchine che lavorano ad alta velocità coninterruttori elettronici, le quali in effettielaborano informazioni proprio grazie alla codificazione binaria.

Naturalmente la questione nodale è quella di esprimere le informazioni in termini gestibili da parte del computer, ovvero servendosi delle sole cifre binarie 0 e 1.
 
Tanto il buon senso quanto la teoria matematica ci insegnano che il bit è la più piccola unità capace di contenere delle informazioni. Peraltroi bit, presi singolarmente, non hanno particolare interesse: essi divengono invece assai utili quando sono raggruppati in insiemi più grandi.
 
Il principale insieme di bit è il byte. Un byte è formato da otto bit, che in esso vengono a formare un’insieme unitario.

L’importanza deibyte risiede nel fatto che essi costituiscono le unità fondamentali dal punto di vista del concreto funzionamento del computer, mentre ibit lo sono da un punto di vista più propriamente teorico.

E per questo chela memoria di un computer, o lacapacità di un disco, sonomisurate in byte. I computer lavorano dunque principalmente con i byte, o con gruppi di byte, sebbene possano manipolare anche i singoli bit che li compongono.
 
Il fatto che in un byte ci siano otto bit significa che ogni byte contiene otto cifre, ciascuna delle quali può essere 001, ovvero spento o acceso.

La matematica ci insegna che se in un byte abbiamo otto bit, ciascuno dei quali può trovarsi indue distinti stati, allora il numero totale delle combinazioni diverse di tali stati all’interno di un byte è pari a2 all’ottava potenza, ovvero a 256.

Dunque un byte può assumere 256 diversi valori, a ciascuno dei quali corrisponde una determinata combinazione dei valori dei bit che lo compongono.

E opportuno tenere a mente questo numero poiché ricorrerà sovente nel seguito di questo tutorial. Di norma non avremo motivo di considerare unità di dimensioni inferiori ad un byte; tuttavia potrà capitare di incontrare qualche accenno ai singoli bit nelle parti più specificamente tecniche. Il paragrafo che segue si occupa appunto del modo in cui i bit vengono designati.
 
I BIT CHE COMPONGONO I BYTE E LE PAROLE
 
Per indicare singolarmente i bit che compongono un byte, si usa numerarli progressivamente da destra a sinistra.

Così il bit che si trova più a destra (detto anche il meno significativo) viene indicato col numero 0 (zero) e quello che si trova più a sinistra col numero 7, come si può osservare nella figura 1.

Questo metodo per specificare i numeri viene chiamato binario; ci sono solo due valori possibili in questo sistema di numerazione. Il sistema numerico più familiare è quello decimale che si serve di 10 cifre (da 0 a 9); il sistema esadecimale, invece, ne usa 16 (da 0 a 9 e da A a F).
   
C’è un motivo preciso per cui la numerazione dei bit comincia da destra e col numero 0. In tal modo, infatti, il numero che designa ciascun bit è anche l’esponente cui va elevato il 2 per ottenere il valore di quel bit all’interno del byte.

Ad esempio, ilbit numero 3 ha un valore di 8, giacché 2 elevato alla terza fa appunto 8.

La situazione è analoga quando si considera una parola che consiste, normalmente, di due byte. (Una parola è composta da 16 bit [due byte] in alcuni computer e da 32 bit [quattro byte] in altri. In questi ultimi tempi, grazie alle nuove tecnologie, si inizia a parlare di parole a 64 bit [otto byte].) In questo caso i bit non vengono numerati separatamente all’interno di ciascun byte, ma in un’unica sequenza da 0 a 15.

Unbyte all’interno del computer rappresenta un dato grezzo, utilizzabile a qualunque scopo. Due delle principali attività che possono essere svolte con l’ausilio del computer sono la gestione di numeri e di testi. I byte, infatti, possono essere utilizzati come numeri o come elementi di un testo (caratteri).
 
Non vi è nulla che caratterizzi, in sé, un byte, o qualsiasi insieme di dati, come numero piuttosto che come testo. Ciò dipende solo dall’uso che se ne sta facendo: se l’utente sta lavorando coi numeri, i byte ricevono un’interpretazione numerica; se invece sta lavorando a un testo, essi vengono trattati come caratteri.

Naturalmente l’interpretazione che viene data ad un byte si fonda sulla combinazione dei bit che lo compongono, ma queste combinazioni, in sé, non hanno un’interpretazione privilegiata in senso numerico o come testo: lo stesso byte, ad esempio, può rappresentare la lettera A o il numero 65, secondo l’uso che se ne sta facendo.

Prima di procedere nell’esame delle questioni relative all’interpretazione dei dati, soffermiamoci a considerare un termine che ricorrerà spesso d’ora innanzi, “parola”. Pur se il byte resta comunque l’unità di base più utile ed usata nella gestione dei dati da parte del calcolatore, può risultare a volte necessario operare con coppie di byte, così da disporre di 16 bit nello stesso tempo.

Parola è appunto il termine tecnico che si usa per designare una coppia di byte che vengono trattati come una sola unità, ovvero 16 bit di dati considerati come un unico insieme. Si presti attenzione, nella lettura di questo tutorial, a non confondere il termine “parola”, usato in questo senso specifico, con lo stesso termine preso nella sua accezione comune.
 
Quando si dice di un computer che è a 8, a 16 o a 32 bit, si intende appunto indicare il numero di bit che esso è in grado di riunire in un solo gruppo. I membri della famiglia dei PC sono tutti a 16 bit, il che significa che possono manipolare 16 bit di dati per volta, anche se ciò non esclude che spesso trattino ciascun byte individualmente. In realtà c’è una piccola eccezione a quanto detto ora, costituita dai modelli che impiegano i microprocessori 386 e 486. Questi computer funzionano a 32 bit in modalità protetta e a 16 in modalità reale.

Si esamineranno ora, per concludere, quattro importanti termini relativi all’argomento che si sta trattando, i dati: il kilobyte (di solito designato tramite l’abbreviazione KB), il megabyte (abbreviato in MB), il gigabyte (GB) e il terabyte (TB).

Queste espressioni vengono usate spesso, in quanto i computer si servono e constano di grandi quantità di byte.

Tuttavia si rammenti che esse si riferiscono a numeri binari, e che dunque corrispondono solo approssimativamente alle analoghe abbreviazioni in uso nel sistema decimale. In particolare, il termine kilobyte, che mutua il proprio prefisso dal sistema metrico decimale, si riferisce a 1024 byte, numero che corrisponde a 2 elevato alla decima potenza.

Si tratta, come si vede, di un numero che si può considerare, con approssimazione in genere accettabile, equivalente al 1000 del sistema decimale, ed in effetti così spesso avviene. E però importante tener presente che si tratta comunque di una approssimazione: un KB corrisponde in realtà a 1024 byte, sicché, ad esempio, 64KB equivalgono a 65.536 byte.

Il termine successivo, MB, indica un KB di KB, ovvero 1024 per 1024 byte, pari a 1.048.576.

Anche in questo caso può essere comodo arrotondare questo numero per ottenerne uno più maneggevole nel sistema decimale, sicché si può dire che un mega equivale, all’incirca, a un milione di byte.

Gli ultimi due termini che ci accingiamo a presentare sono divenuti importanti solo in tempi recenti, in seguito all’aumento della capacità dei dischi. Ungigabyte equivale a unKB di megabyte, ovvero a 1024 per 1024 per 1024.

Dunque il valore esatto di un gigabyte è di 1.073.741.824 byte.

Il terabyte corrisponde invece a un megabyte di megabyte, cioè a 1024 per 1024 per 1024 per 1024 byte, pari a 1.099.511.627.776 byte.

La figura 2 riassume queste cifre.
 
Ora che l’aspetto terminologico è stato esaminato, si può procedere ad ulteriori considerazioni riguardo ai dati. Si affronteranno dapprima i tanto temuti esadecimali, per poi procedere ad un’ulteriore indagine circa i dati numerici.
 
NUMERI ESADECIMALI
 
Per capire veramente il funzionamento dei computer, si tratti o meno di PC, è necessaria una certa padronanza del sistema di numerazione esadecimale (abbreviato inhex), concepito appositamente per essere impiegato dai calcolatori. Questa conoscenza non è certo necessaria all’utente che voglia semplicemente acquisire padronanza nell’uso del software esistente, ma lo è invece per chi intenda comprendere veramente il computer ed utilizzare alcuni degli strumenti più avanzati offerti dal PC, tra cui, ad esempio, il programma DEBUG, che fa parte del DOS.

Volete vedere il programma debug? Fate click su 'Avvio' (o Start), Programmi, Accessori, Prompt dei Comandi. Dall'interno del DOS eseguite "DEBUG" + <INVIO> (figura 3).

A questo punto dovreste vedere una linetta lampeggiante al posto del normale prompt: scrivete "?" +<INVIO>, complimenti, siete dentro al programma DEBUG, ma attenzione! Potreste fare dei danni se non conoscete il linguaggio ASSEMBLER!  Tranquilli! Per uscire digitate "-q" + <INVIO> e poi 'EXIT' +<INVIO> per tornare "al più rassicurante" ambiente grafico diWindows

I numeri esadecimali costituiscono la soluzione di un’importante problema, quello di esprimere con precisione i dati codificati all’interno del computer.

Si è visto che le componenti elementari dei dati contenuti in un computer sono i bit, i quali possono assumere o il valore 0, oppure il valore 1. Se si trascrivono questi dati nella loro forma binaria, se ne ottiene una sequenza piuttosto lunga di zero e di uno.

Già la semplice trascrizione di un byte in questa forma è decisamente scomoda, poiché ci vogliono ben otto cifre (tanti, infatti, sono i bit che compongono un byte) per scrivere un numero compreso fra 0 e 255.

Se poi si dovesse trascrivere la sequenza di bit che rappresenta la parola “esadecimale” ci vorrebbero ben 88 cifre (ogni byte rappresenta infatti una sola lettera).

Si consideri infine che di norma un disco è in grado di contenere 12 milioni di bit. E ora chiaro il motivo per cui è desiderabile disporre di un strumento che consenta di scrivere i dati in un computer in modo altrettanto preciso ma più rapido; questo strumento è appunto costituito dal sistema esadecimale.

Questo sistema non è che un’abbreviazione di quello binario, giacché ogni cifra esadecimale ne rappresenta quattro binarie.

Infatti i bit, considerati individualmente, hanno due valori possibili; considerati in coppie, nehanno quattro (00, 01, 10 e 11); considerati infine in gruppi di quattro, ne hanno sedici (da 0000 a 1111).

Nel sistema numerico decimale, di cui ci si serve di solito, si impiegano 10 diversi simboli. Ciascuno di essi, preso singolarmente, rappresenta un numero compreso tra lo zero ed il nove. Combinando queste stesse cifre in serie più lunghe, si ottengono poi numeri più grandi, come il 100. Lo stesso principio vale per la numerazione binaria, sebbene in questo caso le cifre disponibili siano solo due, 0 ed 1.

Naturalmente così è anche per i numeri esadecimali, sennonché orale cifre sono sedici, ovvero quelle comprese tra 0 e 9, che hanno lo stesso valore numerico che nel sistema decimale, più altre sei. Queste ultime sei cifre corrispondono alle prime sei lettere dell’alfabeto e rappresentano i primi sei numeri di valore superiore al nove: A vale 10, B vale 11 e così via fino adF, che vale 15.

Ciascuna delle sedici cifre esadecimali rappresenta un numero compreso fra lo 0 e il 15, nonché una delle possibili combinazioni di una serie di quattro bit. Ad esempio, la cifra esadecimale A equivale alla serie di bit 1010, mentre F equivale ad 1111.

La figura 4 elenca le 16 cifre esadecimali, i loro equivalenti decimali, nonché i gruppi di cifre binarie che esse rappresentano.

Le cifre esadecimali possono essere interpretate in due modi distinti.

Infatti una cifra esadecimale, ad esempio B, può essere intesa o come espressione di un dato numerico (in questo caso 11), o come rappresentazione di un sequenza di bit (in questo caso 1011), a prescindere dal valore numerico che essa possiede.

Che ci si serva di una, piuttosto che dell’altra interpretazione, dipende esclusivamente dall’impiego che si intende fare del dato.

Verrà forse spontaneo chiedersi ora perché mai ci si serva proprio del sistema esadecimale. Se infatti è chiaro che è utile servirsi di una notazione più breve rispetto a quella binaria, non è altrettanto ovvio il motivo per cui si è scelto di esprimere proprio quattro bit con un solo simbolo, il che costringe ad introdurre sei nuove cifre (A-F) che non si è abituati ad usare come tali.

La risposta è che la numerazione esadecimale, oltre a soddisfare le esigenze di sintesi, si adatta particolarmente bene alla forma in cui i dati sono rappresentati all’interno del computer. Infatti grazie ad essa possiamo rappresentare il valore di un byte esattamente con due cifre esadecimali, ciascuna delle quali si riferisce a quattro dei bit che lo compongono.

Fino ad ora le cifre esadecimali sono state considerate singolarmente, ma in realtà capita spesso di doversene servire per comporre numeri più grandi. In particolare si vedrà più avanti che gli indirizzi di memoria del PC vengono contrassegnati da numeri composti da quattro, o anche cinque cifre esadecimali. E perciò opportuno farsi un’idea più precisa di questi numeri e imparare a effettuare con essi alcune operazioni aritmetiche.
 
La differenza fra l’aritmetica decimale e quella esadecimale sta naturalmente solo nel valore assegnato alle cifre. Nel sistema decimale il numero più grande che possa essere rappresentato con una sola cifra è 9 e il numero successivo è il 10; analogamente, nel sistema esadecimale la singola cifra di maggior valore è F, il cui valore è quindici, ed il numero successivo, che vale sedici, viene scritto con le cifre 10, quindi viene l’il (diciassette) e così via.

Due cifre esadecimali sono sufficienti per esprimere tutte le possibili combinazioni dei bit che compongono un byte. Vi sono 256 di queste combinazioni, da 00000000 a 11111111. Nel sistema esadecimale, 00000000 si scrive 00 e 11111111 si scrive FF. I primi quattro bit sono rappresentati dalla prima cifra esadecimale, gli ultimi quattro dalla seconda.

Quando ci si limita a considerare i valori dei bit come dati qualunque, ci si può servire di una Tabella come la 14.3 per convertire le sequenze di bit in cifre esadecimali e viceversa. Ma per essere in grado di interpretare il valore numerico di una serie di cifre esadecimali, è necessario saper convertire i numeri esadecimali in decimali e viceversa, nonché effettuare semplici operazioni aritmetiche con i numeri esadecimali.

Vediamo in primo luogo come valutare un numero esadecimale.

Si rifletta anzitutto su come vengono valutati i numeri decimali, ad esempio il 123; 123 sta a significare 100 più 20 più 3, giacché ogni posizione, procedendo da destra a sinistra, ha un valore dieci volte superiore alla precedente.

I numeri esadecimali si basano sullo stesso principio, sennonché in questo caso ci si serve di un moltiplicatore pari a sedici anziché a dieci. Così, se interpretiamo 123 come numero esadecimale, esso equivale a 3+16 per 2+16 al quadrato (256) per 1, ovvero al numero decimale 291.

La figura 5 e la figura 6 elencano gli equivalenti decimali di alcuni numeri esadecimali compresi tra 1 e F0000.
 
Ecco come ci si può servire della tabella qui sopra per convertire un numero esadecimale nel decimale equivalente: poniamo che il numero da convertire sia F3A; si cerchi nella prima colonna l’equivalente di A (che è 10), quindi l’equivalente del 30 nella seconda (48) ed infine l’equivalente di F00 nella terza (3.840); sommando i numeri così ottenuti si ricava il decimale 3.898, che equivale appunto all’esadecimale F3A.

Si procede diversamente per convertire un numero decimale nell’equivalente esadecimale; in questo caso, infatti, si procede per sottrazioni successive. Poniamo che il decimale da convertire sia 1.000.000: si cerchi nella tabella il più grande numero esadecimale il cui equivalente decimale non sia maggiore del numero che vogliamo convertire (in questo caso si tratta dell’ultimo numero della tabella, F0000); si sottragga ora il suo valore decimale (983.040) dal numero di partenza e si segua il medesimo procedimento con il risultato ottenuto; si continui infine il procedimento fino a non ottenere più alcun resto. Il numero cercato, che è F4240, si ottiene ora combinando i numeri esadecimali via via trovati.

Fortunatamente non è necessario effettuare le conversioni tra decimali ed esadecimali manualmente, giacché esistono degli strumenti che consentono di evitare le lunghe procedure sopra descritte.

In primo luogo ci sono dei programmi residenti, creati espressamente per i programmatori, che compionoconversioni e calcoli coi numeri esadecimali,decimali e binari.

Inoltre si può impiegare il Qbasic, che viene fornito gratuitamente insieme al DOS. Ecco due brevi programmi in Qbasic che consentono di convertire agevolmente i numeri esadecimali in decimali e viceversa:

INPUT “Scrivi un numero esadecimale “,
PRINT “L’equivalente decimale è “ VAL(”&H”+X$)
e

INPUT “Scrivi un numero decimale “, X
PRINT “L’equivalente esadecimale è “; HEX$(X)

Chi dovesse avere la necessità di effettuare calcoli con numeri esadecimali, può servirsi a tal fine di una utility di programmazione, sfruttare la capacità del Qbasic di compiere tali calcoli, o infine convertire dapprima i numeri in decimali servendosi dei programmi appena forniti.

Nota: nelle ultime versioni di windows il QBASIC non è più implementato. L'alternativa è aprire Microsoft Excel, quindi fare click su 'Strumenti', 'Macro', 'Visual Basic Editor'. Quindi 'Inserisci', 'Modulo' e confezionare la seguente Macro da utilizzare in qualsiasi cella preceduta dal segno si '=" (uguale): si tratta di una funzione pubblica:

Public Function ToEsa(Obj As Long) As String

ToEsa = Hex(Obj)

End Function

Ora disponete di un convertitore universale da numeri interi a numeri esadecimali.


TIPI DI NUMERI
 
Data l’importanza che i numeri hanno per i computer, si vedrà ora con quali tipi di numeri il PC è in grado di lavorare. Per cominciare, si prenderanno in considerazione quei semplici formati numerici che il PC è in grado di gestire immediatamente. In seguito si vedrà come esso riesca, tramite alcuni opportuni accorgimenti, a rappresentare numeri di tipo più complesso.

Anche se può sembrare strano, il PC, di per sé, è in grado di gestire solo numeri interi e, per di più, relativamente piccoli. Tali numeri possono essere di due tipi: interi delle dimensioni di un byte e interi delle dimensioni di due byte, odi una parola.
 
Si è già detto che un PC può essere a 16, a 32 o a 64 bit, a seconda del microprocessore di cui si serve.

I microprocessori 386 e 486 funzionano a 32 bit in modalità protetta e a 16 bit in modalità reale e in modalità virtuale 86; i modelli precedenti sono tutti a 16 bit. Ma, poiché il DOS funziona solo a 16 bit, si può dire genericamente che il PC è un computer a 16 bit. E per questo che il PC può propriamente effettuare operazioni solo con byte singoli o con parole.

Vi sono però dei programmi che consentono di lavorare con numeri più grandi, ad esempio combinando due parole per formare un unico numero composto da 32 bit; tuttavia, senza l’ausilio di questi programmi, il PC può servirsi solo di numeri formati da 8 o 16 bit.

Numeri composti da 8016 bit non possono ovviamente essere molto grandi. Si è visto infatti che ciascun byte può assumere solo 256 valori diversi, ovvero 2 elevato all’ottava potenza; una parola, invece, può assumerne 2 alla sedicesima, ovvero 65.536. Sono ora evidenti i limiti posti dal disporre solo di byte e parole per l’espressione di valori numerici.
 
I numeri interi, sia che si presentino come byte che come parole, possono essere interpretati in due modi, il che duplica la quantità dei formati numerici possibili. Questa ulteriore interpretazione verte sul fatto che si ammettano o meno valori negativi. Se non vi è interesse a utilizzare numeri negativi, tutti i bit disponibili possono essere impiegati per la rappresentazione di valori assoluti, il che significa che un intero delle dimensioni di un byte potrà avere un valore compreso tra O e 255, mentre uno delle dimensioni di una parola potrà arrivare a 65.535.
 
D’altro canto, se è invece necessario servirsi anche di numeri negativi, ciò costringerà a dimezzare il loro valore assoluto. Nel caso di byte singoli si avranno dunque valori compresi tra -128 e +127, mentre le parole potranno valere da -32.768 a + 32.767. Ulteriori informazioni sui numeri negativi sono contenute nel paragrafo “Come vengono rappresentati i numeri negativi”. Si sarà notato che vi è un numero negativo in più rispetto a quelli positivi: viene rappresentato il numero -128, ma non il + 128. Non vi è una ragione particolare di ciò, si tratta di una semplice conseguenza del modo in cui è gestita la rappresentazione dei numeri negatìvi.

La figura 7 sintetizza la quantità di numeri rappresentabili in ciascuno dei quattro formati relativi ai numeri interi.  
 
Come si è detto, il microprocessore del PC può svolgere le quattro operazioni aritmetiche solo con numeri espressi in uno di questi formati.
 
Un processore X86 supporta anche il formato numerico BCD (Binary Coded Decimal), BCD è un formato usato per rappresentare numeri in base 10 (decimali) con soli 4 bit.
 
 
Naturalmente la maggior parte dei programmi non potrebbe funzionare disponendo solo di questi quattro formati. Il BASIC, ad esempio, usa tre tipi di numeri, uno solo dei quali rientra tra quelli che abbiamo ora esaminato; si tratta del formato che, nella terminologia propria del BASIC, viene chiamato integer e che corrisponde a quello a 2 byte con valori negativi. Gli altri due tipi di numeri, chiamati a singola e a doppia precisione, vengono generati tramite accorgimenti che consentono di superare le limitazioni originarie della macchina.
 
COME VENGONO RAPPRESENTATI I NUMERI NEGATIVI
 
I numeri interi negativi vengono rappresentati nel PC in una forma nota come complemento a due. Si tratta di un sistema molto usato nei computer. Lo illustreremo, per comodità, con un esempio relativo al sistema decimale, immaginando di avere a che fare solo con numeri composti da tre cifre, in analogia con la lunghezza standard dei numeri impiegati dal PC.

In questo sistema decimale a tre cifre, il numero zero viene scritto 000, ed il numero uno 001. Se sottraiamo 001 da 001, otteniamo 000. Il problema è questo: come possiamo sottrarre ancora 001, in modo da ottenere meno uno? Immaginiamo ora che 000 sia virtualmente preceduto dalla cifra 1, e di sottrarre da esso 001:

(1) .000 zero
—   .001 meno uno
________________

     .999

Ecco allora che meno uno viene rappresentato come 999; analogamente, meno due sarà 998 e così via.
I numeri positivi sono dunque 000, 001, 002 e così via fino a 499. I numeri negativi, invece, partono dal 999, che vale meno uno, per arrivare a 500, il cui valore è in realtà meno cinquecento. All’interno del computer la rappresentazione dei numeri negativi avviene nello stesso modo, sebbene con cifre binarie.

È importante tener presente che il valore di un numero dipende dal formato in cui è espresso. Se in questo caso 999 vale meno uno, qualora ci si servisse di un formato che non ammette i numeri negativi esso varrebbe effettivamente novecentonovantanove.
 
NUMERI COMPLESSI
 
Molte delle applicazioni per cui si impiega il computer devono servirsi di numeri più complessi di quelli che il computer stesso è in grado, di per sé, di gestire. Quando si fa della pianificazione finanziaria con un foglio elettronico, o si effettuano calcoli ingegneristici, o anche soltanto quando si verifica il proprio estratto conto, i numeri interi che sono stati considerati fino ad ora non bastano più. Si pensi solo al denaro: con questi numeri non potremmo esprimere cifre superiori a 65.535 lire. E dunque chiaro che è necessario disporre di altri numeri.
 
Vi sono due modi in cui il PC può estendere la gamma dei numeri disponibili, nonché due modi di effettuare calcoli con tali numeri.
Il primo e più semplice modo di aumentare la quantità di numeri rappresentabili dal PC consiste nel creare interi formati da più di due byte. In linea teorica si può impiegare qualsiasi numero di byte, ma in pratica se ne usano di norma quattro, che consentono di rappresentare circa due miliardi di numeri.
 
Per esprimere numeri più grandi o frazionari, ci si serve invece della virgola mobile, un sistema impiegato nella numerazione scientifica. In questo caso, i numeri vengono rappresentati indue parti: una contiene le cifre che compongono il numero, l’altra indica il punto in cui è situata la virgola che precede i decimali. Questo tipo di rappresentazione consente la massima precisione, indipendentemente dalle dimensioni del numero, che può essere enorme o molto piccolo.

Nel linguaggio di programmazione Qbasic, tanto la rappresentazione a precisione singola, quanto quella a precisione doppia, impiegano la virgola mobile. La differenza fra le due sta nel fatto che la precisione doppia consente l’impiego di una maggior quantità di cifre.
 
Probabilmente questo concetto non è nuovo. Se qualcuno chiede il costo di un oggetto e si sa che costa € 99,90, è facile che si risponda che l’oggetto costa € 100. A questo livello, questa minima imprecisione è davvero poco significativa; in questo caso, si potrebbe parlare di numeri a precisione singola.

Per contro, se la banca invece di pagare un interesse del 5,6485945921038529 per cento sul conto corrente, decidesse di troncare il tasso di interesse per portarlo al 5%, questa imprecisione sarebbe inaccettabile. Questo concetto di adatta perfettamente alla programmazione. A seconda della precisione nei calcoli richiesta dal software che si sta sviluppando, è possibile creare un programma che utilizzi valori a precisione singola (che richiedono meno memoria) o valori a precisione doppia (che usano più memoria, ma garantiscono l’assenza di errori causati da troncamenti o arrotondamenti).
 
La virgola mobile è peraltro usata anche da altri linguaggi di programmazione. I programmi di foglio elettronico usano anch’essi la virgola mobile, per ottenere una sufficiente flessibilità e precisione.

Il problema che ora si pone è come sia possibile effettuare operazioni aritmetiche con numeri espressi in questi nuovi formati, dal momento che il microprocessore, di per sé, può gestire solo i quattro formati di base di cui si è parlato in precedenza. Vi sono due modi di aggirare questo ostacolo, l’uno tramite il software, l’altro tramite l’hardware. La soluzione più comune è la prima. Tutti i linguaggi di programmazione, compreso il BASIC, e quasi tutti i programmi di calcolo, come i fogli elettronici, contengono routine per l’effettuazione di calcoli con numeri interi formati da più di due byte e con numeri a virgola mobile.
 
Queste subroutine sfruttano le capacità logiche e di calcolo del PC come elementi con cui comporre calcoli complessi. Tuttavia questo tipo di soluzione ha una controindicazione: se il PC compie con la massima velocità le operazioni di cui è naturalmente capace, una subroutine relativa a numeri a virgola mobile può impiegare una quantità di tempo cento volte superiore per effettuare un calcolo equivalente. Ciò per il semplice fatto che un calcolo di questo tipo è in realtà composto di cento calcoli elementari.
 
Di norma questo rallentamento delle operazioni di calcolo non comporta conseguenze sensibili, tuttavia è possibile ottenere una maggiore velocità sfruttando le caratteristiche dell’hardware.

Il microprocessore del PC può venire affiancato da un coprocessore, il quale è concepito per uno scopo specifico: la rapida effettuazione di calcoli con numeri a virgola mobile. Questi coprocessori matematici fanno parte della famiglia Intel 87.
 
A partire dal microprocessore 486DX viene prodotto con un coprocessore incorporato, sicché non necessita del supporto di un Intel 87. Grazie all’installazione di un coprocessore, sempre che il programma impiegato sia predisposto per il suo uso, la velocità e la precisione dei calcoli su numeri a virgola mobile aumentano enormemente.
 
Non si dimentichi, però, che molti programmi non effettuano alcun calcolo con numeri a virgola mobile. E questo il caso, ad esempio, dei programmi di elaborazione testi, i quali dunque non traggono alcun vantaggio dalla presenza di un coprocessore. Gli stessi programmi che effettuano operazioni con numeri a virgola mobile, non sempre sfruttano l’eventuale presenza di un coprocessore. Il BASIC, per esempio, è tra questi, mentre i fogli elettronici impiegano il coprocessore ogni qualvolta è necessario.
 
I formati numerici avanzati non posseggono standard analoghi a quelli esistenti per i formati base o, come si vedrà più avanti, per il set di caratteri del PC. Tuttavia vi sono alcune convenzioni piuttosto diffuse, che ora prenderemo in esame.
 
Si prendano dapprima in considerazione i numeri interi estesi. Teoricamente un programma può formare numeri con una qualunque quantità di byte, ma di solito si usano interi relativi composti da 4 byte. Questi numeri possono rappresentare valori compresi, all’incirca, tra meno due miliardi e più due miliardi. I coprocessori della famiglia 87 impiegano interi non solo a 4, ma anche a 8 byte; questi ultimi possono arrivare a nove miliardi di miliardi. Inoltre possono gestire un formato speciale decimale che consente di rappresentare 18 cifre decimali; anche questo formato esprime numeri dell’ordine di miliardi di miliardi. Questo formato decimale costituisce un caso unico, poiché di norma il computer impiega sempre formati di tipo binario.

Veniamo ora ai numeri a virgola mobile. Essi di norma vengono rappresentati in gruppi di 4 o 8 byte, come nei formati a singola e a doppia precisione del Qbasic. Il formato a 4 byte consente un’approssimazione equivalente circa a sei cifre decimali, mentre il formato ad 8 byte arriva a circa sedici cifre decimali. Le dimensioni massime di questi numeri si aggirano intorno a 10 elevato alla trentottesima potenza. Queste cifre sono peraltro puramente indicative, in quanto i numeri a virgola mobile vengono in realtà rappresentati secondo diversi sistemi di codificazione. Inoltre i coprocessori 87 utilizzano anche un formato a 10 byte, che consente un approssimazione che si aggira intorno alle 18 cifre.
 
Il tipo di numeri impiegati dipende dal programma di cui ci si serve. Ciò che si è detto ora vale per la maggior parte dei linguaggi di programmazione e costituisce una panoramica generale sufficientemente estesa, ma ciò non toglie che programmi specifici possano servirsi di propri formati numerici. Ciò avviene spesso per i fogli elettronici, che possono impiegare particolari varianti dei numeri a virgola mobile.

CREAZIONE DI STRINGHE
 
I dati di testo, o caratteri, rivestono una grande importanza nell’impiego del computer. In realtà i computer vengono usati più per la gestione di testi che di numeri, il che, in un certo senso, stride col fatto che essi sono anzitutto dei calcolatori. Ma si è imparato ben presto a usare queste macchine, originariamente progettate per svolgere calcoli, per aiutarci a scrivere. Esamineremo ora alcune nozioni fondamentali circa la gestione di testi da parte del computer.
 
I dati di testo sono composti da caratteri, come la lettera A. Ogni lettera viene rappresentata tramite una particolare combinazione di bit e occupa lo spazio di un byte. La maggior parte dei computer usa un codice standard per la conversione delle lettere in sequenze di bit.
 
Consideriamo invece per ora il modo in cui vengono gestiti gruppi composti da più caratteri.
Le lettere dell’alfabeto non sono molto utili, finché non vengono riunite per formare parole e frasi. Analogamente, nei computer i gruppi formati da più byte che rappresentano caratteri sono più significativi dei byte presi singolarmente. Il termine tecnico che si usa per indicare un gruppo di caratteri trattato come entità unitaria è stringa. Una stringa è un gruppo di byte consecutivi che viene considerato un’unità.
 
Tutti i linguaggi di programmazione, e molti dei principali tipi di programmi applicativi (come i fogli elettronici), impiegano stringhe di caratteri. Ovviamente i programmi di elaborazione testi sono concepiti principalmente per lavorare con queste stringhe. Nonostante le stringhe siano un elemento molto importante, non vi è molto da dire su di esse. E però importante avere ben presenti alcune loro particolarità, specialmente riguardo al modo in cui vengono memorizzate e ad alcuni limiti posti al loro uso.

Nella memoria del computer e sui dischi, le stringhe vengono immagazzinate esattamente come suggerisce il buon senso: i byte che rappresentano i caratteri sono posti in sequenza, uno dopo l’altro. Fin qui, non c’è nulla di particolare. E invece più problematico unire più caratteri per formare una stringa. Si è visto, infatti, che ogni tipo di dato numerico ha uno specifico formato che ne definisce con precisione le dimensioni, ovvero il numero di byte da esso occupati. Le stringhe, invece, non hanno una lunghezza prefissata, sicché bisogna definirne in qualche modo la lunghezza, per far sì che i caratteri che le compongono possano essere considerati un’unità.
 
Non esiste una soluzione a questo problema che sia impiegata da tutti, dato che i vari programmi usano metodi diversi per definire la lunghezza delle stringhe. Poiché non è possibile stabilire delle regole, saranno considerati alcuni dei metodi più comuni.
 
Si può dire che esistono due metodi principali per definire la lunghezza di una stringa. Il primo consiste semplicemente nel segnalarla mediante un numero che viene fatto precedere immediatamente alla stringa stessa. Un esempio di ciò potrebbe essere il seguente:
 
6Queste4sono5delle8stringhe
 
Si osservi come ogni parola costituisca una stringa a sé, e come sia preceduta da un numero che indica quanti caratteri la compongono. Si può però immaginare come questo metodo ponga dei limiti alla lunghezza delle stringhe, giacché il numero che la indica non può superare un certo valore, che varia a seconda del formato in cui è espresso.
 
Spesso la lunghezza di una stringa viene indicata tramite un numero intero assoluto delle dimensioni di un byte, il cui valore massimo è 255. Ciò comporta che molti programmi non possono gestire stringhe più lunghe di 255 caratteri (o anche meno, il che si verifica con programmi che riservano uno o due byte ad altri usi). Anche il BASIC utilizza questo metodo, sicché il limite che pone alla lunghezza delle stringhe è di 255 caratteri; tuttavia il BASIC compilato si serve di 2 byte per indicare la lunghezza di una stringa, il che consente di estenderne il limite a più di 32.000 caratteri. Alcuni programmi di elaborazione testi considerano come stringhe non le singole parole, ma le linee.
 
Questi programmi impiegano un byte per indicare la lunghezza della stringa, sicché in essi la lunghezza massima di una linea è pari a 255 caratteri.
 
L’altro metodo per definire la lunghezza delle stringhe ha il vantaggio di non comportare alcun limite predefinito. Esso consiste infatti nel porre un determinato simbolo alla fine di ogni stringa. L’esempio seguente impiega come simbolo del limite di ogni stringa un asterisco:

Queste* sono*delle*stringhe*
 
Il limite di ogni stringa non è ovviamente considerato parte della stringa stessa. Vi sono due simboli che vengono comunemente impiegati come limiti: il primo è un byte di valore 0, scelta dovuta al fatto che, come vedremo, questo valore non corrisponde a nessun carattere; il secondo è un byte di valore 13, numero che contrassegna il carattere di ritorno a capo. Normalmente questo secondo simbolo viene impiegato da programmi che trattano ogni linea come un’unica stringa, poiché di norma il simbolo di ritorno a capo contrassegna comunque la fine di una riga.
 
L’ovvio svantaggio che deriva dal servirsi di un simbolo per delimitare una stringa, consiste nell’impossibilità di usare quello stesso simbolo all’interno delle stringhe. Questo può non essere un problema grave, ma è comunque un elemento da tener presente.


Torna a:






Tutorials informatica di base


Home page MC2 E-Learning



Dr.Maurizio Cucchiara

Amministratore unico
MC2 E-Learning S.a r.l.
Formazione per il Web
autore del corso:
"Comprendere il PC Corso Base"
disponibile on line su questo sito
http://www.mc2.it/html/pc.html





PROMOZIONE ESTIVA:

SCONTO 50% SU TUTTI I CORSI MC2.IT

VISITA WWW.MC2.IT!

Sconto 50% su tutti i corsi mc2.it solo per agosto 2014!

SOLO DAL 1 AL 31 AGOSTO 2014!



NOVITA'!

'VIDEO TUTORIAL
DOWNLOAD AREA'

(Fai clic sull'immagine
qui sotto per vedere
una anteprima della
pagina di accesso)



L'accesso è riservato agli iscritti ai corsi on line www.mc2.it

Acquista anche uno solo
dei nostri corsi
per avere immediatamente
accesso alla
'Videotutorial Download Area': è facile, basta un clic:

http://www.mc2.it



Condividi sui social network:

Social buttons



Iscriviti al nostro
canale Youtube!


Iscrivi al nostro canale Youtube

Iscrivimi ora



Potrai restare aggiornato
sui nostri più recenti
video-tutorial su:
Microsoft Access ed Excel
e molto altro...


Cerca sul web con Google: