siste minu me razi one

43
Sistemi di numerazione Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 – p.1/43

Upload: bossmilan

Post on 12-Nov-2015

223 views

Category:

Documents


1 download

DESCRIPTION

sistemi numerazioni

TRANSCRIPT

  • Sistemi dinumerazione

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.1/43

  • Proprieta` fondamentali

    I sistemi di numerazione di nostro interesse sono caratterizzati da: presenza dello 0; notazione posizionale: ogni cifra ha un peso che dato dalla sua

    posizione allinterno del numero; presenza di 4 operazioni: addizione, sottrazione, moltiplicazione

    e divisione.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.2/43

  • Definizioni

    Cifra: simbolo dellalfabeto con cui sono rappresentati i numeri fino al decimo simbolo si usano 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, dopo il decimo simbolo si usano le lettere (maiuscole)

    dellalfabeto inglese. Base: cardinalit dellalfabeto dei simboli usato per

    rappresentare un numero. Numero: sequenza ordinata di cifre

    pu essere preceduto dal segno + o , pu contenere un solo simbolo ",".

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.3/43

  • Notazione posizionale

    Notazione posizionale: dato un numeroN = ctct1 . . . c1c0, c1c2 . . . cz

    in base b, composto da un numero finito di cifre ci, il numero puessere scritto in maniera equivalente come:N = ct b

    t + . . . + c1 b1 + c0 b

    0 + c1 b

    1 + . . . + cz b

    z

    Notazione: per chiarezza si indicher con nb che il numero n rappresentato in base b (con b in base 10 se non altrimentispecificato).Ad esempio:

    numero base rappresentazione23 4 234

    1001 2 10012

    2A 12 2A12

    FFDD 16 FFDD16

    54 10 5410

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.4/43

  • Un modo per rappresentare le cifre

    Le cifre possono essere viste comedisposte su di una circonferenza.

    Tenendo conto di questo modo dirappresentare le cifre si possonoenunciare degli algoritmi per leusuali operazioni aritmetiche.

    Questi algoritmi operano su numerix e y nella stessa base e con lostesso numero di cifre. La circonferenza per la base 10

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.5/43

  • Somma in base qualsiasi

    La somma z zn+1zn . . . z1z0 di due numeri x xn . . . x1x0 ey yn . . . y1y0 in base b si ottiene nel seguente modo:

    z0: partendo dalla cifra x0 si percorre la circonferenza in base bin senso orario "toccando" y0 cifre. La cifra cos raggiunta ilvalore di z0. Il riporto r0 = 1 se durante lavanzamento di y0 cifresi tocca la cifra 0, altrimenti r0 = 0.

    zi: partendo dalla cifra xi si percorre la circonferenza in base b insenso orario "toccando" yi cifre. Dalla cifra cos selezionata sipercorre la circonferenza in base b in senso orario "toccando"ri1 (il riporto precedente) cifre. La cifra cos ottenuta il valoredi zi. Il riporto ri = 1 se durante lavanzamento di yi + ri1 cifresi tocca la cifra 0, altrimenti ri = 0.

    zn+1 = rn.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.6/43

  • Esempio

    124 + 234 =?

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.7/43

  • Differenza in base qualsiasi

    La differenza z zn . . . z1z0 di due numeri x xn . . . x1x0 ey yn . . . y1y0 in base b (x y) si ottiene nel seguente modo: z0: partendo dalla cifra x0 si percorre la circonferenza in base b

    in senso anti-orario "toccando" y0 cifre. La cifra cos raggiunta il valore di z0. Il prestito r0 = 1 se durante lavanzamento di y0cifre si attraversa la cifra 0, altrimenti r0 = 0.

    zi: partendo dalla cifra xi si percorre la circonferenza in base b insenso anti-orario "toccando" yi cifre. Dalla cifra cos selezionatasi percorre la circonferenza in base b in senso anti-orario"toccando" ri1 (il prestiro precedente) cifre. La cifra cosottenuta il valore di zi. Il riporto ri = 1 se durantelavanzamento di yi + ri1 cifre si attraversa la cifra 0, altrimentiri = 0.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.8/43

  • Esempio

    468 278 =?

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.9/43

  • Prodotto in base qualsiasi

    Si pu applicare la definizione che vede il prodotto x y come:

    y

    i=1

    x

    In alternativa, si pu costruire la tavola pitagorica con le cifredella base e quindi procedere come in base 10.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.10/43

  • Esempio

    124 324 =?

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.11/43

  • Divisione in base qualsiasi

    Si procede utilizzando la tabella del prodotto secondo le regoleusate per la base 10.

    Anche nelle basi diverse da 10 esistono i numeri periodici.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.12/43

  • Esempio

    1324 : 24 =?

    1214 : 24 =?

    1104 : 34 =?

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.13/43

  • Conversioni di base

    Conversioni da una base q 6 10 alla base 10. Conversioni dalla base 10 ad una base q 6 10. Conversioni da una base q 6 10 ad una base h 6 10. Conversioni da una base q ad una base h = qt, dove t un

    numero naturale e viceversa. Osservazione: le cifre c0, . . . , cq1 di una base q vengono

    banalmente convertite in base 10 dal seguente algoritmo:ci in base q corrisponde ad i in base 10

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.14/43

  • Conversioni verso la base 10

    Dato un numero X in base q (q 6= 10)xq = xn . . . x0, x1 . . .xz

    per convertirlo in base 10 si pu applicare il seguente algoritmo:1. si converte ogni cifra Xi nel corrispondente numero Yi in base 10.2. si determina il numero

    k = yn*qn + . . . + y0*q0 + y1*q1 + . . . + yz * qz

    dove le operazioni aritmetiche sono da intendersi in base 10.3. k il numero in base 10 equivalente a X in base q.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.15/43

  • Esempi

    21A12 =

    21A16 =

    217, 348 =

    100112 =

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.16/43

  • Conversioni dalla base 10

    1. Siano I e D rispettivamente la parte intera e la parte decimaledel numero X da convertire.

    2. Poniamo k e j uguali a zero.3. Siano qk e rk rispettivamente il quoziente ed il resto della

    divisione I diviso b.4. Se qk diverso da zero poni il valore di qk in I, incrementa k di

    uno e vai al punto 3.5. Siano tj e hj rispettivamente la parte intera e la parte decimale

    del prodotto di D per b.6. Se hj diverso da zero poni il valore 0, hj in D, incrementa j di

    uno e vai al punto 5.7. Siano uk, . . . , u0 le cifre in base b corrispondenti ai numeri

    rk, . . . , r0 e siano w0, . . . , wj le cifre in base b corrispondenti ainumeri t0, . . . , tj. Il numero v = uk . . .u0, w0, . . .wj in base b lequivalente di X in base 10.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.17/43

  • Esempio

    1. 123, 5610 =?2. 58, 9687510 =?

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.18/43

  • Conversioni tra basi diverse dalla base 10

    Dato un numero x in base q (q 6= 10) per convertirlo in base b (b 6= 10)si pu applicare il seguente algoritmo:

    1. Si converte il numero x dalla base q alla base10.

    2. Il numero in base 10 ottenuto al punto 1 siconverte in base b.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.19/43

  • Esempio

    21A12 =?

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.20/43

  • Conversioni tra basi una potenza dellaltra (1)

    Dato un numero x xn . . . x0, x1 . . . xz in base q per convertirlo inbase b con q = bt si pu applicare il seguente algoritmo:

    1. Si converte ogni cifra xi di x nellequivalentenumero ki nella base b utilizzando t cifre(eventualmente aggiungendo degli zeri).

    2. Il numerod kn . . . k0, k1 . . .kz

    in base b e` lequivalente del numero x in baseq.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.21/43

  • Esempio

    36D, B416 =

    A05, 7116 =

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.22/43

  • Conversioni tra basi una potenza dellaltra (2)Dato un numero x xn . . . x0, x1 . . .xz in base q con qt = b e n + 1,z multipli di t. Per convertire X dalla base q alla base b si puapplicare il seguente algoritmo:

    1. Siano k e h rispettivamente il quoziente della divisione di n+1diviso t e z diviso t.

    2. Si raggruppa, a partire da destra per la parte intera e a partire dasinistra per la parte decimale, il numero X in blocchi di t cifre. Siottengono cos t0, . . . , tk numeri in base q per la parte intera di Xe s0, . . . , sh numeri in base q per la parte decimale di x.

    3. Si converte ogni blocco ti (si) nella corrispondente cifra di (ci)nella base b.

    4. Il numerof dk . . .d0, c0 . . .ch

    in base b lequivalente del numero X in base q.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.23/43

  • Esempio

    11010, 112 =

    1100, 0012 =

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.24/43

  • Rappresentazione dei numeri interi

    Problemi da affrontare:1. Lelaboratore adopera solo due simboli:

    0: assenza di corrente 1: presenza di corrente

    2. Lelaboratore ha una memoria finita. Conseguenze:

    Codificare i numeri in binario. Limitare linsieme dei numeri rappresentabili. Le operazioni non godono delle usuali propriet (ad

    esempio, associativa)

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.25/43

  • Complemento a due: introduzione

    Intervallo di rappresentazione:

    2k1 . . . 2k1 1

    Unica rappresentazione per 0. La somma eguale a differenza.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.26/43

  • Rappresentazione in complemento a due

    Si decide a priori il numero k di bit utilizzati per larappresentazione.

    Si potranno rappresentare 2k1 valori maggiori od uguali a 0 e2k1 valori minori di 0.

    Per rappresentare un numero positivo m (0 m 2k1 1) siutilizza la sua rappresentazione binaria aggiungendoeventualmente degli 0 a sinistra fino a raggiungere k bit.

    Per rappresentare un numero negativo m (2k1 m 1) sidetermina il numero c = 2k + m (c un numero positivo) e quindisi scrive la rappresentazione binaria di c.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.27/43

  • Esempio

    Con 3 bit si rappresenta in complemento a due lintervallo[4 . . . 3].

    Il numero 3 viene rappresentato dalla sequenza 011. Per rappresentare il numero 3 determino il numero

    23 3 = 8 3 = 5 e quindi 3 = 101. Con 4 bit si rappresenta in complemento a due lintervallo

    [8 . . . 7].

    Il numero 3 viene rappresentato dalla sequenza 0011. Per rappresentare il numero 3 determino il numero

    24 3 = 16 3 = 13 e quindi 3 = 1101.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.28/43

  • Osservazione

    Lesempio mostra la propriet di estensione in segno secondo cui se si

    vuole trasformare un numero in complemento a due a k bit in uno a

    k + m bit (m > 0) sufficiente aggiungere a sinistra m zeri se il numero positivo, m uni se il numero negativo.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.29/43

  • Operazioni in complemento a due (2)

    Si esamineranno solo le operazioni di1. Complemento a due (),2. addizione (+) e3. sottrazione ().

    Le operazioni sono definite dopo avere fissato il numero di bitnella rappresentazione in complemento a due.

    Attenzione! Il risultato delle operazioni potrebbe non esserecompreso nellintervallo di rappresentazione scelto.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.30/43

  • Addizione

    Si procede sommando fra loro i due addendi come se fosseronumeri binari.

    Leventuale riporto oltre la k-esima cifra si scarta. Loperazione pu produrre un risultato al di fuori dellintervallo

    rappresentabile (overflow). Il risultato corretto (non si verifica overflow) se:

    i due addendi sono di segno diverso; i due addendi ed il risultato sono dello stesso segno.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.31/43

  • Esempi

    01101 + 11000 =?

    10001 + 10000 =?

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.32/43

  • Operazione di complemento a due

    Esistono due regole alternative:1. A partire da sinistra si invertono tutti i bit del numero (0 si

    trasforma in 1 e viceversa) fino al bit 1 pi a destra escluso.2. Si invertono tutte i bit del numero e si somma 1.

    Non esiste il complemento a k bit di 2k1. La rappresentazione di un numero negativo n10 in complememto

    a due con k bit (n 6= 2k1) si ottiene anche scrivendo larappresentazione del numero positivo n e complementando adue il risultato.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.33/43

  • Sottrazione

    Per calcolare la differenza a b tra due numeri a e b incomplemento a due ad k bit distinguiamo tre casi:1. b 6= 2k1: si calcola il complemento di b ( b) e si esegue

    la somma a + ( b).2. b = 2k1 e a < 0: si inverte il primo bit della

    rappresentazione di a.3. b = 2k1 e a 0: il risultato non rappresentabile.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.34/43

  • Esempi

    011011 011110 =?si complementa a due il sottraendo 100010si procede con la somma: 011011 + 100010 = 111101 il risultato corretto.

    011011 100000 =?011011 positivo e 100000 = 261 non si pu rappresentare ilrisultato.

    111011 011110 =?si complementa a due il sottraendo 100010si procede con la somma: 111011 + 100010 = 011101il risultato non corretto.

    111011 100000 =?111011 negativo e 100000 = 261, il risultato 011011.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.35/43

  • Rappresentazione dei numeri reali: introduzione

    Rappresentazione in virgola mobile (floating point). Notazione ispirata a quella scientifica:

    ogni numero rappresentato attraverso una mantissa m edun esponente e.

    m 2e

    La mantissa in valore assoluto minore di 1 (0, b1 . . . bk). Non rappresenta dei numeri reali ma solo alcuni numeri razionali

    allinterno di un intervallo. La risoluzione (precisione) dipende dalle cifre usate per la

    mantissa. Fissato un numero di cifre per lesponente, i valori possibili

    si addensano intorno allo 0 e si diradano verso gli estremidellintervallo rappresentato.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.36/43

  • Rappresentazione dei numeri reali: esempio

    Supponiamo di avere a disposizione 2 bit per lesponente e 3 bit per lamantissa (il primo bit di segno).

    0.75 0.5 0.25 0 0.25 0.5 0.75

    2 0.1875 0.125 0.00625 0 0.00625 0.125 0.1875

    1 0.375 0.25 0.125 0 0.125 0.25 0.375

    0 0.75 0.5 0.25 0 0.25 0.5 0.75

    1 1.5 1 0.5 0 0.5 1 1.5

    0.

    8

    0

    .

    6

    0.

    4

    0

    .

    2

    0 0.

    2 0.

    4

    0

    .

    3

    0

    .

    1

    0

    .

    1

    5

    0

    .

    0

    5

    0

    .

    0

    5

    0

    .

    1

    0.

    1

    5

    0.

    3 0.

    6

    0

    .

    0 2

    5

    0

    .

    0 2

    5

    0.

    07 5

    0

    .

    07 5

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.37/43

  • Forma normalizata

    Esiste una forma normalizzata (IEEE 754) nella quale devonoessere riportati tutti i risultati:

    0, b1 . . . bk2e (b1 6= 0)

    La mantissa contiene solo le cifre decimali La mantissa eguale a 0 implica che si rappresenta il numero

    0 indipendentemente dal valore dellesponente.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.38/43

  • Ossevazione

    Per stabilire il significato da dare ad una sequenza binaria occorreconoscere come stata codificata.Ad esempio, la sequenza:

    100010001

    1000100012 = 27310 100010001cpl2,9 = 23910

    In virgola mobile con i primi 5 bit per la mantissa ed i restanti 4 bitper lesponenete, entrambi rappresentati in complemento a due

    100010001 = 0.15 21

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.39/43

  • Rappresentazione dei caratteri

    Convenzionalmente i caratteri sono rappresentati attraverso lacodifica ASCII.

    Mediante tale codifica ogni carattere viene rappresentato da unnumero compreso tra 0 e 127.

    Sono quindi utilizzati 7 bit per la rappresentazione. I primi 32 caratteri della codifica sono caratteri di controllo. I caratteri alfabetici (maiuscoli o minuscoli) sono consecutivi (il

    carattere A ha il valore pi piccolo) cos come le cifre decimali.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.40/43

  • Codice ASCII(nul) 0 | (dc1) 17 | ! 33 | 1 49 | A 65 | Q 81 | a 97 | q 113(soh) 1 | (dc2) 18 | " 34 | 2 50 | B 66 | R 82 | b 98 | r 114(stx) 2 | (dc3) 19 | # 35 | 3 51 | C 67 | S 83 | c 99 | s 115(etx) 3 | (dc4) 20 | $ 36 | 4 52 | D 68 | T 84 | d 100 | t 116(eot) 4 | (nak) 21 | % 37 | 5 53 | E 69 | U 85 | e 101 | u 117(enq) 5 | (syn) 22 | & 38 | 6 54 | F 70 | V 86 | f 102 | v 118(ack) 6 | (etb) 23 | 39 | 7 55 | G 71 | W 87 | g 103 | w 119(bel) 7 | (can) 24 | ( 40 | 8 56 | H 72 | X 88 | h 104 | x 120(bs) 8 | (em) 25 | ) 41 | 9 57 | I 73 | Y 89 | i 105 | y 121(ht) 9 | (sub) 26 | * 42 | : 58 | J 74 | Z 90 | j 106 | z 122(nl) 10 | (esc) 27 | + 43 | ; 59 | K 75 | [ 91 | k 107 | { 123(vt) 11 | (fs) 28 | , 44 | < 60 | L 76 | \ 92 | l 108 | | 124(np) 12 | (gs) 29 | - 45 | = 61 | M 77 | ] 93 | m 109 | } 125(cr) 13 | (rs) 30 | . 46 | > 62 | N 78 | 94 | n 110 | 126(so) 14 | (us) 31 | / 47 | ? 63 | O 79 | _ 95 | o 111 | (del) 127(si) 15 | (sp) 32 | 0 48 | @ 64 | P 80 | 96 | p 112 |(dle) 16 |

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.41/43

  • Rappresentazione delle immagini (1)

    Le immagini vengono codificate attraverso una sequenza di 0 ed1.

    Il passaggio da una immagine ad una sequenza binaria prendein nome di digitalizzazione.

    Limmagine suddivisa in punti o pixel. Ogni pixel viene codificato attraverso una sequenza di bit

    (profondit) che indica lintensit di ciascuna componente dicolore (RGB).

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.42/43

  • Rappresentazione delle immagini (2)

    Per interpretare una immagine necessario conoscere:1. La dimensione del rettangolo in cui contenuta.2. La risoluzione misurata in punti per pollice quadrato (dpi).3. La profondit dellimmagine.

    I formati di codifica pi diffusi sono: TIFF: Target image file format, GIF: Graphic Interchange Format, JPEG: Joint Photographic Experts Group.

    Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.43/43

    Propriet fondamentaliDefinizioniNotazione posizionaleUn modo per rappresentare le cifreSomma in base qualsiasiEsempioDifferenza in base qualsiasiEsempioProdotto in base qualsiasiEsempioDivisione in base qualsiasiEsempioConversioni di baseConversioni verso la base $10$EsempiConversioni dalla base $10$EsempioConversioni tra basi diverse dalla base $10$EsempioConversioni tra basi una potenza dell'altra (1)EsempioConversioni tra basi una potenza dell'altra (2)EsempioRappresentazione dei numeri interiComplemento a due: introduzioneRappresentazione in complemento a dueEsempioOsservazioneOperazioni in complemento a due (2)AddizioneEsempiOperazione di complemento a dueSottrazioneEsempiRappresentazione dei numeri reali: introduzioneRappresentazione dei numeri reali: esempioForma normalizataOssevazioneRappresentazione dei caratteriCodice ASCIIRappresentazione delle immagini (1)Rappresentazione delle immagini (2)