Docstoc

LaRosa-fdi1-03.pdf

Document Sample
LaRosa-fdi1-03.pdf Powered By Docstoc
					Università degli Studi di Messina
Facoltà di Ingegneria
                                    Codifica binaria




Corso di Fondamenti di Informatica I 
         Fondamenti di Informatica I
     CdL Ingegneria Elettronica 
            A.A. 2006/07




                         Ing. Francesco La Rosa
Premessa                                     Codifica binaria



  Tutti  i  dati,  non  importa  quanto  complessi,  per  poter 
  essere  comprensibili  a  un  calcolatore  devono  essere 
  codificati in forma binaria.
  codificati in forma binaria

  In questa lezione ci occuperemo del modo in cui, in un 
  calcolatore, vengono rappresentati e trasformati vari 
  generi di informazione:
     
       testi;
     
       numeri interi;
     
       numeri reali,
     
       ecc.
Codifica dei Numeri                         Codifica binaria




    Affronteremo il problema della codifica di:
      
        numeri naturali;
      
        numeri interi (dotati di segno);
      
        numeri frazionari (tra zero e uno);
      
        numeri reali.
Numeri Naturali                               Codifica binaria




  Il  sistema  che  comunemente  utilizziamo  si  dice 
  arabico,  in  quanto  fu  introdotto  in  Europa  dagli  arabi 
  nel corso del Medioevo;

  Esso rappresenta i numeri naturali tramite sequenze di 
  cifre;

  Le cifre sono dieci; A={0, 1, 2, 3, 4, 5, 6, 7, 8, 9}.

  E' un sistema posizionale.
                 posizionale
Numeri Naturali
                                                          Codifica binaria
   Sistemi additivi

 Non tutti i sistemi di numerazione sono posizionali;

 La principale alternativa è data dai sistemi additivi;
                                       sistemi additivi
In    un  sistema  additivo  il  significato  dei  simboli  che 
compongono  un  numero  è  indipendente  dalla  posizione
in cui tali simboli compaiono.
Esempi di sistemi di numerazione additivi:
       
           ad ogni unità corrisponde un simbolo (bastoncini, conchiglie, ecc.);
       
           sistema romano (I, V, X, L, C, D, M).
Numeri Naturali
                                              Codifica binaria
     Sistemi posizionali


    I  sistemi  posizionali  hanno  un  indubbio  vantaggio
rispetto a quelli additivi; essi consentono di rappresentare 
i  numeri  in  modo  più  compatto  (cioè  usando  meno 
spazio)  e  di  svolgere  su  di  essi  i  calcoli  in  modo  più 
efficiente.
 Numeri Naturali
                                                               Codifica binaria
      Scrittura in base b
Consideriamo  un  sistema  di  numerazione  posizionale  ad  n  cifre  in 
base b;

Un generico numero in tale sistema sarà rappresentato da una sequenza 
di cifre (simboli dell'alfabeto adottato):
     a    , an­2, ..., a1, a0
        n­1


 a      è la cifra più significativa, a0 quella meno significativa;
      n­1


Il numero N (N       ) codificato in base b  è dato dalla seguente formula:
                     b
         N  = a    ∙b  + an­2∙bn­2 + .... + a2∙b2 + a1∙b1 +a0∙b0 = Σi=0,n­1ai∙bi    (1)
                      n­1
           b     n­1
  
Numeri Naturali
                                              Codifica binaria
  Scrittura in base b



La  formula  (1)  ci  indica  anche  che,  tramite  n  cifre  in 
base  b,  è  possibile  rappresentare  bn  numeri  naturali 
diversi, da 0 a bn – 1.
Numeri Naturali
                                              Codifica binaria
   Scrittura in base b


 Applichiamo la formula (1) alla numerazione decimale:
                         (1)

Se assumiamo b = 10, interpretiamo la stringa 587 come:

    
         587 = 5 * 102 + 8 * 101 + 7 * 100 
    Numeri Naturali
      Il sistema binario                                   Codifica binaria


 Il sistema binario ha base b = 2;


Le cifre dell'alfabeto sono 0 e 1.    A = {0, 1}

Per esempio, il numero binario 101001011 corrisponde al
seguente numero in base 10:
1010010112 = (1∙28 + 0∙27 + 1∙26 + 0∙25 + 0∙24 + 1∙23 + 0∙22  + 1∙21 + 1∙20)10 =
                     = (256 + 64 + 8 + 2 + 1)10 = 33110
Numeri Naturali
  Il sistema binario                             Codifica binaria

 Il modo più semplice per convertire un numero in base 
dieci in forma binaria consiste nel:
  
    operare successive divisioni per due del numero decimale;
              successive divisioni per due
  
    il risultato sarà la sequenza di 0 e 1 ottenuti come resto delle 
  divisioni (presi in ordine inverso).
     Per esempio:             (79)10 = (1001111)2  
       79 : 2 = 39  con resto 1
       39 : 2 = 19  con resto 1
       19 : 2 =   9  con resto 1
         9 : 2 =   4  con resto 1
         4 : 2 =   2  con resto 0
         2 : 2 =   1  con resto 0
         1 : 2 =   0  con resto 1
Numeri Naturali                          Codifica binaria
Sistema ottale e sistema esadecimale 



  Sistema ottale: A={0, 1, 2, 3, 4, 5, 6, 7} (8 simboli).
                  A={0, 1, 2, 3, 4, 5, 6, 7} 

  Sistema esadecimale (16 simboli): 
    A={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}

    Esempio:
          (35)10 = (100011)2 = (43)8 = (23)16 
Numeri Naturali                         Codifica binaria
Sistema ottale e sistema esadecimale 
 Numeri Naturali                                       Codifica binaria
 Sistema ottale e sistema esadecimale 



 Le rappresentazioni ottale ed esadecimale sono interessanti per la 
relativa facilità di conversione dalla base 2 alla base 8 oppure 16.
relativa facilità di conversione

 Questa conversione può essere effettuata per parti,  considerando volta 
per volta un gruppo di tre (o quattro) cifre binarie.
Esempi:
            (311)10 = (100110111)2 = (100 110 111)2 = (467)8 
                  (311)10 = (100110111)2 = (0001 0011 0111)2 = (137)16
                                                     Codifica binaria
Numeri Interi


  Dovremo rappresentare il segno del numero oltre al suo valore;
                             segno

  Due differenti codifiche binarie dei numeri interi:
      
        rappresentazione in modulo e segno (più intuitiva);
        rappresentazione in modulo e segno 
      
        rappresentazione in complemento a 2.

  La  rappresentazione  in  complemento  a  2  semplifica  l'esecuzione  di 
operazioni aritmetiche tra numeri interi.
Numeri Interi                                       Codifica binaria
Rappresentazione in modulo e segno



  Se  m  bit  sono  disponibili  per  rappresentare  un  intero,  la 
rappresentazione  in  modulo  e  segno  utilizza  il  primo  bit  (più  a 
sinistra) come bit di segno;
               bit di segno

  Per  convenzione,  0  indica  un  numero  positivo  e  1  un  numero 
negativo.

  Quando  sono  disponibili  m  bit,  possono  essere  rappresentati  gli 
interi compresi fra  – (2m – 1 – 1 ) e + (2m – 1 – 1 ).

  Esistono due rappresentazioni del numero 0.
Numeri Interi                                 Codifica binaria
Rappresentazione in complemento a 2


 La  rappresentazione  in  complemento  a  2  di  un  numero  (X) 
negativo  –N  in m bit si ottiene sottraendo N al numero 2m:
                            X=2m ­ N

  Dati m bit si possono rappresentare gli interi compresi tra 
­2m­1 e +(2m­1 ­ 1).

  Per  esempio,  la  rappresentazione  in  complemento  a  2  di 
­3 in tre bit è: 101.
                   X= 23 – 3 = 5 ; (5)10 = (101)2
Numeri Interi                               Codifica binaria
Rappresentazione in complemento a 2





  Esiste un'unica rappresentazione dello 0;

  Anche in questa rappresentazione:
    
       i numeri positivi hanno il primo bit uguale a 0; 
    
       i numeri negativi hanno il primo bit uguale a 1.
                                                                 Codifica binaria
    Numeri frazionari

    I numeri frazionari sono numeri reali compresi fra 0 e 1;

 Essi  si  rappresentano  tramite  uno  zero,  il  punto  decimale  ed  una 
sequenza di cifre che rappresentano una frazione di unità:
                                   N=0.a­1a­2...a­(n ­1)a­n
   Il peso delle cifre ai dipende dalla base scelta; 

 

    Il significato di un numero frazionario in base b  è espresso dalla (2):
          
           N  = a ∙b­1 + a ∙b­2 + .... + a     ∙b­n+1  +a­n∙b­n = Σi=1,na­i∙b­i    (2)
             b    ­1       ­2               ­n+1
Numeri frazionari                            Codifica binaria




  Esempio 1:
  Esempio 1
        0.58710 = 5 * 10­1 + 8 * 10­2 + 7 * 10­3

  Esempio 2:
  Esempio 2
        0.10112 = 1* 2­1 + 0 * 2­2  + 1 * 2­3 + 1 * 2­4
                                      Codifica binaria
Numeri reali


  Sono in realtà numeri razionali dotati di una parte 
intera e una parte frazionaria;


  Approssimano i numeri reali con una precisione 
arbitraria.
Numeri reali                              Codifica binaria
Rappresentazione in virgola fissa


  E' sufficiente giustapporre due numeri (un intero ed un 
                                due numeri
frazionario);

 Per esempio:
            (00101001011.10110)2 = (331.6875)10

 Questa rappresentazione viene detta in virgola fissa.

 Un numero fisso di cifre viene dedicato, rispettivamente, 
alla parte intera e a quella frazionaria.
Numeri reali                            Codifica binaria
Rappresentazione in virgola mobile




  Utilizza la notazione esponenziale per la codifica dei 
              notazione esponenziale
numeri reali;

Non esiste un unico standard (diverse convenzioni).

Numeri reali                                     Codifica binaria
Rappresentazione in virgola mobile



 A ciascun numero reale vengono associati due numeri;

 Il primo numero, m, è detto mantissa;

Viene interpretato come un numero frazionario compreso tra ­1 e +1:


   
     un bit separato consente di rappresentarne il segno.


    Il secondo numero, n, è detto caratteristica:
          
            Intero con segno usato come esponente;
Numeri reali                                 Codifica binaria
Rappresentazione in virgola mobile



 La formula che esprime N (numero da rappresentare) in funzione 
di m (mantissa) e di n (caratteristica)  è la seguente:


                         N = m * bn


    b indica la base della notazione esponenziale.
Numeri reali                                Codifica binaria
Rappresentazione in virgola mobile


Osservazioni:
   
     Si noti che b può non coincidere con la base utilizzata;
   
     Il vantaggio della notazione mobile è dato dalla capacità 
     di  rappresentare  con  poche  cifre  numeri  molto  grandi
     oppure  di  rappresentare  con  precisione  numeri  molto 
     piccoli.
     piccoli
Numeri reali                                 Codifica binaria
Rappresentazione in virgola mobile
Altre Osservazioni: 

 Qualunque  sia  la  codifica  prescelta,  la  rappresentazione 
dei  numeri  reali  su  un  calcolatore  è  soggetta  ad 
approssimazioni;
approssimazioni

 Le  approssimazioni  si  propagano  nel  corso  delle 
operazioni;

  Il calcolo numerico è la disciplina che studia le proprietà 
dell'esecuzione delle operazioni tramite calcolatore:
      
        tra  le  altre  cose,  consente  di  stimare  l'errore   
        numerico introdotto.
    Codifica dei caratteri                   Codifica binaria



 I caratteri di un testo vengono codificati tramite sequenze di
bit, utilizzando un codice di traduzione;
                     codice di traduzione


 Il codice più usato è il codice ASCII (American Standard Code 
for Information Interchange):
     
       utilizza 7 bit (128 caratteri rappresentabili);
     
       alcune versioni prevedono l'uso di 8 bit (256 caratteri).
Codifica dei caratteri                 Codifica binaria



I caratteri vengono classificati in tre categorie:
                                     tre categorie

   
     caratteri di comando (codici per le stampe);
   
     caratteri alfanumerici (A­Z, a­z, 0­9);
   
     simboli (punteggiatura e operatori aritmetici). 
Codifica dei caratteri                          Codifica binaria


Nelle operazioni di immagazzinamento dei dati l'ottavo 
bit (o il nono bit aggiuntivo) può essere usato come bit di 
parità;
parità

Il bit di parità viene posto a 0 oppure a 1 in modo che il 
numero di bit posti a 1 in ciascun byte sia pari;

E' possibile accorgersi di eventuali malfunzionamenti ed  errori 
 Operazioni aritmetiche                         Codifica binaria
 Somma e differenza di numeri interi
La somma di due numeri positivi di lunghezza k in base b
viene eseguita incolonnando i numeri e calcolando la somma
di cifre di ugual posto;

Quando la somma di due numeri di posto i supera il valore
b­1,  viene aggiunto un riporto al posto i+1;

Per il risultato sono necessari k+1 posti:
     
        eventuale riporto della k­ma somma;
     
       in caso di riporto (k­ma somma), utilizzando solo k cifre, 
       si produce un errore.
  Operazioni aritmetiche                        Codifica binaria
  Somma e differenza di numeri interi


La somma di due numeri dotati di segno sfrutta la rappresentazione 
in complemento a 2;

Gli operandi devono essere sommati in colonna;


Overflow: a fronte di due operandi dello stesso segno, si produce un
risultato di segno opposto.
Operazioni aritmetiche                          Codifica binaria
Somma e differenza di numeri interi


La rappresentazione in complemento a 2 consente la somma 
   algebrica di due numeri negativi;

Di conseguenza, la differenza “sfrutta” la rappresentazione in 
                    differenza
complemento a 2:
     
       complemento del sottraendo;
     
       il sottraendo viene aggiunto algebricamente al minuendo;
 Operatori logici &                  Codifica binaria
 Algebra di Boole
Algebra definita su 3 operazioni:
    
      OR;
    
      AND;
    
      NOT.
Si applicano a operandi che possono assumere solo 
  due valori (vero o falso);
               vero falso
Convenzionalmente attribuiremo il valore vero alla
cifra 1 e il valore falso alla cifra 0;
      1 
Operatori logici &                    Codifica binaria
Algebra di Boole
Definizione degli operatori logici

   Tavole di verità degli operatori OR, AND e NOT.
                                    OR AND NOT

				
DOCUMENT INFO