I sistemi di numerazione ==== La scrittura in base 10 ---- Il nostro sistema di numerazione è il sistema decimale. Ciò ha probabilmente origine dal fatto che abbiamo 10 dita. Forse se fossimo nati ragni avremmo contato fino ad otto ed useremo un sistema di numerazione ottale, se fossimo nati gatti avremmo contato fino a 4 e useremo un sistema quattrale, millepiedi fino a mille. Come conta un computer? Un computer capisce solo due stati: passa corrente o non passa corrente: è come se avesse due dita. Tutti i sistemi che oggi usiamo nell'informatica sono a due stati, si dicono 'bistabili': i circuiti elettrici possono trovarsi nello stato di acceso o di spento, i dischi magnetici dell'hard disk sono fatti di microscopici magneti che possono essere magnetizzati in un verso o nel verso opposto, i dischi ottici come i CD-ROM e i DVD si comportano come microscopici specchi che riflettono la luce oppure non la riflettono. Nell'antichità si usava uno strumento chiamato abaco. Gli abachi erano tavolette suddivise in colonne su cui si spalmavano cera o sabbia e si incidevano segni o si mettevano sassolini. Per contare un certo numero di oggetti e ricordarci quanti sono, utilizziamo un abaco: .. figure:: ../images/immagini212.png :align: center :width: 13.6cm :height: 6.447cm Cominciamo a contare con le mani: per ogni raggruppamento di 10 segniamo un'unità di ordine superiore, fino a contare tutti gli elementi del nostro insieme. Le unità che rimangono, perché non riescono a formare un raggruppamento di 10, vengono segnate con la cifra che le rappresenta: nel nostro caso 3. Passiamo all'unità di ordine superiore: le decine. Anche con queste formiamo raggruppamenti di 10, se ci riusciamo. Ogni raggruppamento forma un'unità di ordine superiore. Se rimangono unità di questo ordine esse rappresentano decine. Se non rimane alcuna unità scriviamo 0. Nel nostro caso ne rimangono 2. Il procedimento continua finché non abbiamo finito di contare tutti gli elementi. Nel nostro esempio finiamo dopo aver formato un'unità di ordine superiore. Il nostro numero è 123. Naturalmente i due numeri 123 e 312 sono due numeri diversi anche se sono formati dalle stesse cifre: sono diversi perché la posizione delle cifre è diversa. In generale, il valore dei numeri è diverso a seconda della posizione delle sue cifre. Il sistema di numerazione che solitamente usiamo è dunque un **sistema posizionale**: è chiamato decimale o a base dieci perché dieci unità di un determinato ordine formano un'unità di ordine superiore. Riassumendo, abbiamo una serie di dieci simboli: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Il significato dei simboli dipende dalla posizione che assumono nella “parola” che rappresenta un numero. Ad esempio: :math:`1846 =1 \cdot( 1000 ) + 8 \cdot( 100 ) + 4 \cdot( 10 ) + 6 \cdot( 1 )` In particolare, scritto con le potenze del 10: :math:`1846 =1 \cdot( 10 )^{3} + 8 \cdot( 10 )^{2} + 4 \cdot( 10 )^{1} + 6 \cdot( 10 )^{0}` Se il numero è indicato come somma delle cifre per le potenze della base la scrittura si chiama **notazione polinomiale**. Dieci è la **base** della rappresentazione, ovvero il numero di simboli usati, la potenza del 10 indica il **peso** (la posizione) che i simboli hanno nel numero. Una volta compreso il meccanismo fondamentale su cui si basa il sistema di numerazione decimale, il procedimento si può estendere ad una base qualunque. Se B è la base di un sistema, quando si formano B unità di un certo ordine, queste formano un'unità di ordine superiore. In questo modo si può costruire un sistema di numerazione con qualsiasi base maggiore di 1. Scrittura di un numero in una base qualsiasi ---- Il procedimento usato per scrivere un numero in base 10 può essere usato per scrivere un numero in una base qualsiasi. Esempio .. figure:: ../images/immagini310.png :align: center :width: 8.5cm :height: 4.059cm *Contare 29 oggetti in base 5.* Come nel caso della numerazione in base 10, utilizziamo un abaco. Invece di contare per dieci proviamo a contare per cinque. Invece di raggruppare per unità, decine, decine di decine e così via, conteremo raggruppando per unità, per cinquine, per cinquine di cinquine e così via. Il numero che otteniamo si scrive :math:`( 104 )_{5}` e si legge *“uno-zero-quattro in base cinque”* per distinguerlo da centoquattro scritto in base 10. Per ottenere il numero decimale che corrisponde al numero scritto in base 5 occorre sviluppare il numero in base 5 nella sua scrittura polinomiale: :math:`( 104 )_{3}=1 \cdot5^{2}+0 \cdot5^{1}+4 \cdot5^{0}=25+0+4=( 29 )_{10}` .. figure:: ../images/immagini410.png :align: center :width: 8.5cm :height: 4.059cm Esempio *Contare 29 oggetti in base 3.* Questa volta dobbiamo contare per tre. Il numero che otteniamo si scrive :math:`( 1002 )_{3}` e si legge *“uno-zero-zero-due in base tre”* per distinguerlo da milledue scritto in base 10. Per ottenere il numero decimale che corrisponde al numero scritto in base 3 occorre sviluppare il numero in base 3 nella sua scrittura polinomiale. :math:`( 1002 )_{3}=1 \cdot3^{3}+0 \cdot3^{2}+0 \cdot3^{1}+2 \cdot5^{0}=27+0+0+2=( 29 )_{10}` Riflettiamo su quanto abbiamo fatto negli esempi precedenti: i simboli che occorrono per scrivere un numero in base 10 sono dieci::math:`\{0,1,2,3,4,5,6,7,8,9 \}` ; i simboli necessari per scrivere un numero in base 5 sono cinque: :math:`\{0,1,2,3,4 \}` ; i simboli necessari per scrivere un numero in base 3 sono tre: :math:`\{0,1,2 \}` . Analogamente i simboli che serviranno per scrivere un numero in base 2 sono due :math:`\{0,1 \}` . Possiamo generalizzare e dire che i simboli necessari per scrivere un numero in una base B qualsiasi sono B e precisamente :math:`\{0,1 , \ldots ,B -1 \}` Possiamo scrivere i numeri anche in una base superiore a 10. Una base molto usata nell'informatica, insieme alla base 2, è la base esadecimale: cioè la base 16. In questo caso, per contare devo fare raggruppamenti di 16. Sono necessari perciò 16 simboli per indicare questi raggruppamenti, pertanto occorrono simboli anche per i numeri 10 , 11, 12, 13, 14, 15... I simboli convenzionalmente usati sono i seguenti: :math:`( A )_{16}=( 10 )_{10} ; ( B )_{16}=( 11 )_{10} ; ( C )_{16}=( 12 )_{10} ; ( D )_{16}=( 13 )_{10} ; ( E )_{16}=( 14 )_{10} ; ( F )_{16}=( 15 )_{10}` I numeri seguenti sono :math:`( 10 )_{16}=( 16 )_{10} ; ( 11 )_{16}=( 17 )_{10} ; ( 12 )_{16}=( 18 )_{10} ; ( 13 )_{16}=( 19 )_{10} ; ( 14 )_{16}=( 20 )_{10} ; ( 15 )_{16}=( 21 )_{10}` **Convertire un numero da una base diversa da 10 a base 10** Per scrivere un numero da una base diversa da 10 a base 10 bisogna sviluppare il numero nella sua forma polinomiale. Se :math:`( x )_{ B}` è un numero qualsiasi scritto nella base B e se :math:`a_{ n} a_{n -1} \ldots a_{2} a_{1} a_{0}` sono le cifre del numero :math:`\text{ da }0\text{ a}B -1` avremo: :math:`( x )_{10}=a_{ n} \cdot B^{ n} +a_{n -1} \cdot B^{n -1} +\ldots +a_{2} \cdot B^{2} +a_{1} \cdot B^{1} +a_{0} \cdot B^{0}` #. Stabilire il valore di verità delle seguenti proposizioni: a. La scrittura 1234 può esprimere un numero in base 4 V/F #. Il valore numerico espresso in base 10 della cifra 2 nel numero (1523)6 è 72 V/F #. Il valore numerico espresso in base 10 della cifra 3 nel numero (321)4 è 12 V/F #. Il valore numerico espresso in base 10 del numero (321)4 è 57 V/F #. Scrivi il numero (3411)5 in forma polinomiale e trova il corrispondente numero decimale :math:`( 3411 )_{5} = 3 \cdot 5^{ \ldots } + \ldots \cdot 5^{2} + 1 \cdot 5^{1} + \ldots\ldots = 375 + \ldots\ldots + 5 + \ldots\ldots = \ldots \ldots` #. Trasforma i seguenti numeri scritti in base diversa da 10 in un numero decimale :math:`( 11101 )_{2} ; ( 2001 )_{3} ; ( 3023 )_{4} ; ( 41 )_{5} ; ( 3005 )_{6}` [29, 55, 203, 21, 653] #. Trasforma i seguenti numeri scritti in base 2 in un numero decimale :math:`( 110111 )_{2} ; ( 1001 )_{2} ; ( 111 )_{2} ; ( 111111 )_{2} ; ( 101 )_{2}` [55; 9; 7; 63; 5] #. Trasforma i seguenti numeri scritti in base 16 in un numero decimale :math:`( 20F )_{16} ; ( AA )_{16} ;( 19 )_{16} ; ( 3 E )_{16}` [527; 170; 25; 62] **Convertire un numero da base 10 a una base diversa da 10** .. list-table:: Tabella31 :header-rows: 0 * - Successive divisioni per 3 di 29 - **Quozienti** delle successive divisioni per 3 - **Resti**.. Warning, unrecognized: {urn:oasis:names:tc:opendocument:xmlns:text:1.0}line-breakdelle successive divisioni per 3 * - 29 : 3 - 9 - **2**.. Warning, unrecognized: {urn:oasis:names:tc:opendocument:xmlns:drawing:1.0}line * - 9 : 3 - 3 - **0** * - 3 : 3 - 1 - **0** * - 1 : 3 - 0 - **1** Abbiamo visto che per contare e scrivere un numero in una base diversa da dieci, per esempio 29 in base 3, dobbiamo raggruppare per 3. Raggruppare per 3 ha lo stesso significato che dividere per 3. Nella prima divisione per tre dei 29 oggetti il quoziente indica quante terzine otteniamo, mentre il resto indica quante unità di ordine 0 verranno considerate. Nel nostro esempio si ottengono nove terzine, mentre rimangono 2 unità di ordine 0. Il 2 sarà il primo numero a destra che verrà considerato. Con nove terzine si ottengono tre terzine di terzine con resto 0. Questo 0 diventa la cifra che scriviamo a sinistra del 2. Con tre terzine di terzine otteniamo una terzina di terzina di terzina, mentre rimangono 0 terzine di terzine. Questo 0 diventa il numero che scriviamo a sinistra dello zero precedente. Ora il quoziente di 1 diviso 3 dà come quoziente 0 con resto 1. Qui ci fermiamo e scriviamo 1 a sinistra dello 0 trovato precedentemente. Il numero si scrive da destra verso sinistra prendendo i resti dal basso verso l'alto, si ha :math:`( 29 )_{10}=( 1002 )_{3}` . Controlliamo con la notazione polinomiale: :math:`1 \cdot 3^{3}+0 \cdot 3^{2}+0 \cdot 3^{1}+2 \cdot 3^{0}=27+2=29` . Esempio *Convertire nel sistema binario (in base 2) il numero 59.* Dividiamo successivamente 59 per 2 fino a che non otteniamo zero come quoziente e prendiamo come risultato della conversione la successione dei resti partendo dall’ultimo. .. list-table:: Tabella32 :header-rows: 0 * - Successive divisioni per 2 di 59 - **Quozienti** delle successive divisioni per 2 - **Resti**.. Warning, unrecognized: {urn:oasis:names:tc:opendocument:xmlns:text:1.0}line-breakdelle successive divisioni per 2 * - 59 : 2 - 29 - .. Warning, unrecognized: {urn:oasis:names:tc:opendocument:xmlns:drawing:1.0}line**1** * - 29 : 2 - 14 - **1** * - 14 : 2 - 7 - **0** * - 7 : 2 - 3 - **1** * - 3 :2 - 1 - **1** * - 1 : 2 - 0 - **1** 59 scritto in base 2 sarà :math:`( 111011 )_{2}` Verifichiamo con la scrittura polinomiale :math:`1 \cdot 2^{5}+1 \cdot 2^{4}+1 \cdot 2^{3}+0 \cdot 2^{2}+1 \cdot 2^{1}+1 \cdot 2^{0}=32+16+8+2+1=59` Esempi Trasforma da base 10 a base diversa di 10 .. list-table:: Tabella34 :header-rows: 0 * - - - - b - a - s - e - 3 - - - - - - b - a - s - e - 4 - - - - - - b - a - s - e - 5 - - - - - - * - 3 - 1 - 5 - 3 - - - - - - - - - 3 - 1 - 5 - 4 - - - - - - - 3 - 1 - 5 - 5 - - - - - - - - * - 3 - 1 - 5 - 1 - 0 - 5 - 3 - - - - - - 3 - 1 - 2 - 7 - 8 - 4 - - - - - 3 - 1 - 5 - 6 - 3 - 5 - - - - - - * - .. Warning, unrecognized: {urn:oasis:names:tc:opendocument:xmlns:drawing:1.0}line - - **0** - 1 - 0 - 5 - 3 - 5 - 3 - - - - - - **3** - 7 - 6 - 1 - 9 - 4 - - - - - **0** - 6 - 0 - 1 - .. Warning, unrecognized: {urn:oasis:names:tc:opendocument:xmlns:drawing:1.0}line2 - 5 - - - - * - - - - - - **0** - 3 - 3 - 1 - 1 - 3 - - - - - - **2** - 1 - 6 - .. Warning, unrecognized: {urn:oasis:names:tc:opendocument:xmlns:drawing:1.0}line4 - 4 - - - - - - **3** - 1 - 0 - **2** - - - - * - - - - - - - - **2** - - 9 - 3 - 3 - - - - - - - **3** - 4 - **1** - - - - - - - - **2** - - - - - * - - - - - - - - - - **2** - 3 - **1** - - - - - - - - **0** - - - - - - - - - - - - - - * - - - - - - - - - - - **0** - - - - - - - - - - - - - - - - - - - - - - - 31510 = 1022003 31510 = 103234 31510 = 22305 Per trasformare i numeri da base 10 a base 2 basta scrivere il numero come somma delle potenze del 2: #. si parte dalla potenza del 2 più vicina, per difetto, al numero da convertire; #. si vede se la potenza precedente di ordine inferiore può fare parte della sequenza, cioè se la somma tra le potenze non diventa più grande del numero. Se può farne parte allora si scrive 1, altrimenti 0; si prosegue in questo modo fino ad arrivare a :math:`2^{0}` , cioè 1; #. la sequenza di 1 e 0, da sinistra verso destra, ottenuti è il numero binario corrispondente. Esempio Consideriamo ancora il numero 59. Qual è la potenza del 2 più vicina, per difetto al 59? Il numero 32, cioè :math:`2^{5}` . Quindi :math:`2^{5}` fa parte del numero binario. Scrivo 1 come primo numero della sequenza Vediamo ora :math:`2^{4} = 16` . Anche 16 può far parte del numero binario perché 32 + 16 = 48 che è minore di 59. Segno 1 come secondo numero della sequenza Per lo stesso ragionamento anche :math:`2^{3} = 8` fa parte del numero binario. Infatti 32 + 16 + 8 = 56, minore di 59. Segno ancora 1 come terzo numero della sequenza. Invece :math:`2^{2} = 4` non può farne parte perché 32 + 16 + 8 + 4 = 60, maggiore di 59. Segno 0 come quarto numero della sequenza. :math:`2^{1} = 2` e :math:`2^{0} = 1` vanno bene e si arriva al totale voluto 59. Segno 1 come quinto e 1 come sesto numero della sequenza. Riassumendo::math:`59=1 \cdot 2^{5}+1 \cdot 2^{4}+1 \cdot 2^{3}+0 \cdot 2^{2}+1 \cdot 2^{1}+1 \cdot 2^{0}=( 111011 )_{2}` #. Scrivere in base 2 i seguenti numeri in base dieci: .. list-table:: Tabella91 :header-rows: 0 - 4 - 15 - 12 - 27 - 33 Risultati:math:`[\dots ; ( 100 )_{2} ; ...... ; ( 1100 )_{2} ; ......... ; ( 100001 )_{2} ]` #. Scrivere in base 3 i seguenti numeri: .. list-table:: Tabella92 :header-rows: 0 * - 2 - 4 - 15 - 12 - 27 - 33 Risultati:math:`[( 2 )_{3} ; ( \dots )_{3} ; ( 120 )_{3} ; ( ...... )_{3} ; ( 1000 )_{3} ; ( ......... )_{3} ]` #. Scrivere in base 4 i seguenti numeri: .. list-table:: Tabella93 :header-rows: 0 * - 2 - 4 - 15 - 12 - 27 - 33 Risultati:math:`[( \dots )_{4} ; ( 10 )_{4} ; ( 33 )_{4} ; ( ...... )_{4} ; ( ...... )_{4} ; ( 201 )_{4} ]` #. Scrivere in base 5 i seguenti numeri: .. list-table:: Tabella94 :header-rows: 0 * - 2 - 4 - 15 - 12 - 27 - 33 Risultati:math:`[( 2 )_{5} ; ( \dots )_{5} ; ( ...... )_{5} ; ( 22 )_{5} ; ( ......... )_{5} ; ( 113 )_{5} ]` #. Scrivere in base 6 i seguenti numeri: .. list-table:: Tabella95 :header-rows: 0 * - 2 - 4 - 15 - 12 - 27 - 33 Risultati:math:`[( \dots )_{6} ; ( 4 )_{6} ; ( \dots )_{6} ; ( 20 )_{6} ; ( .... )_{6} ; ( .... )_{6} ]` #. Scrivere in base 7 i seguenti numeri decimali: .. list-table:: Tabella96 :header-rows: 0 Risultati:math:`[( 2 )_{7} ; ( \dots )_{7} ; ( .... )_{7} ; ( .... )_{7} ; ( .... )_{7} ; ( 45 )_{7} ]` #. Scrivere in base 8 i seguenti numeri: .. list-table:: Tabella97 :header-rows: 0 * - 2 - 4 - 15 - 12 - 27 - 33 Risultati:math:`[( \dots )_{8} ; ( \dots )_{2} ; ( 17 )_{8} ; ( .... )_{8} ; ( 33 )_{8} ; ( ....... )_{8} ]` #. Scrivere in base 9 i seguenti numeri: .. list-table:: Tabella98 :header-rows: 0 * - 2 - 4 - 15 - 12 - 27 - 33 Risultati:math:`[( \dots )_{9} ; ( \dots )_{9} ; ( 16 )_{9} ; ( ..... )_{9} ; ( ...... )_{9} ; ( 36 )_{9} ]` #. Scrivere in base 16 i seguenti numeri: .. list-table:: Tabella99 :header-rows: 0 * - 2 - 4 - 15 - 12 - 27 - 33 Risultati:math:`[( 2 )_{16} ; ( \dots )_{16} ; ( F )_{16} ; ( \dots )_{16} ; ( 1B )_{16} ; ( ...... )_{16} ]` **Conversione di un numero da una base diversa da 10 a un'altra base diversa da 10** Esempio Scrivere il numero :math:`( 1023 )_{4}` in base 7. Per scrivere un numero da una base B a una base K tutte e due diverse da 10 occorre #. trasformare il numero in base B in un numero decimale attraverso la sua scrittura polinomiale; #. trasformare il numero decimale nella base K attraverso i resti delle divisione successive per K . Applichiamo la procedura indicata: :math:`( 1023 )_{4}=1 \cdot 4^{3}+0 \cdot 4^{2}+2 \cdot 4^{1}+3 \cdot 4^{0}=64+0+8+3=( 75 )_{10}` #. .. list-table:: Tabella33 :header-rows: 0 * - Successive divisioni per 7 di 75 - **Quozienti** delle successive divisioni per 7 - **Resti**.. Warning, unrecognized: {urn:oasis:names:tc:opendocument:xmlns:text:1.0}line-breakdelle successive divisioni per 7 * - 75 : 7 - 10 - **5**.. Warning, unrecognized: {urn:oasis:names:tc:opendocument:xmlns:drawing:1.0}line * - 10 : 7 - 1 - **3** * - 1 : 7 - 0 - **1** Il numero scritto da destra verso sinistra con i resti delle successive divisioni per 7 presi dal basso verso l'alto è :math:`( 135 )_{7}` . Le trasformazioni eseguite sono: :math:`( 1023 )_{4} \rightarrow ( 75 )_{10} \rightarrow ( 135 )_{7}` #. Trasformare in base 7 i seguenti numeri scritti in base 4 :math:`( 103 )_{4} ; ( 120 )_{4} ; ( 203 )_{4} ; ( 1301 )_{4} ; ( 123 )_{4} ; ( 301 )_{4}` R::math:`[( 25 )_{7} ; ( .... )_{7} ; ( 50 )_{7} ; ( ...... )_{7} ; ( 36 )_{7} ; ( ...... )_{7} ]` #. Trasformare in base 9 i seguenti numeri scritti in base 3 :math:`( 10002 )_{3} ; ( 2020 )_{3} ; ( 11201 )_{3} ; ( 120122 )_{3} ; ( 1001 )_{3}` R::math:`[( 102 )_{9} ; ( \dots )_{9} ; ( ...... )_{9} ; ( 518 )_{9} ; ( ...... )_{9} ]` #. Trasformare in base 16 i seguenti numeri scritti in base 4 :math:`( 133 )_{4} ; ( 120 )_{4} ; ( 203 )_{4} ; ( 2301 )_{4} ; ( 223 )_{4}` R::math:`[( 1F )_{16} ; ( .... )_{16} ; ( 23 )_{16} ; ( .... )_{16} ; ( 2B )_{16} ]` **Conversione tra base 4, base 8, base 16 e base 2** Consideriamo il numero scritto in base 2 :math:`( 11010011100101 )_{2}` vogliamo scriverlo in base 4, in base 8, in base 16 senza passare dalla sua scrittura in base 10. Infatti gruppi di due cifre in base 2 rappresentano tutte le cifre della base 4, gruppi di 3 cifre in base 2 rappresentano tutte le cifre della base 8, e gruppi di 4 cifre nella base 2 rappresentano tutte le cifre della base 16, come indicato nella seguente tabella. .. list-table:: Tabella132 :header-rows: 0 * - Base 10 - base 2 - base 4 - base 8 - base 16 * - 0 - 0 - 00 = 0 - 000 = 0 - 0000 = 0 * - 1 - 1 - 01 = 1 - 001 = 1 - 0001 = 1 * - 2 - 10 - 00.10 = 2 - 010 = 2 - * - 3 - 11 - 00.11 = 3 - 011 = 3 - * - 4 - 100 - 01.00 = 10 - 100 = 4 - * - 5 - 101 - 01.01 = 11 - - * - 6 - 110 - 01.10 = 12 - - * - 7 - 111 - 01.11 = 13 - - * - 8 - 1000 - 10.00 = 20 - 001.000 = 10 - * - 9 - 1001 - - - * - 10 - 1010 - - - * - 11 - 1011 - - - * - 12 - 1100 - - - * - 13 - 1101 - - - * - 14 - 1110 - - - * - 15 - 1111 - - - * - 16 - 10000 - - - 0001.0000 = 10 * - 17 - 10001 - - - **Da base 2 a base 4**. Dobbiamo raggruppare il numero scritto in base 2 in gruppi di due cifre partendo da sinistra e tradurre con la corrispondente cifra in base 4. .. list-table:: Tabella35 :header-rows: 0 * - Numero scritto in base 2 - 1 1 - 0 1 - 0 0 - 1 1 - 1 0 - 0 1 - 0 1 * - Numero scritto in base 4 - 3 - 1 - 0 - 3 - 2 - 1 - 1 :math:`( 11010011100101 )_{2}=( 3103211 )_{4}` **Convertire il numero da base 2 a base 8**. Dobbiamo raggruppare il numero scritto in base 2 in gruppi di tre cifre partendo da sinistra e tradurre con la corrispondente cifra in base 8. .. list-table:: Tabella36 :header-rows: 0 * - Numero scritto in base 2 - 1 1 - 0 1 0 - 0 1 1 - 1 0 0 - 1 0 1 * - Numero scritto in base 8 - 3 - 2 - 3 - 4 - 5 :math:`( 11010011100101 )_{2}=( 32345 )_{8}` **Convertire il numero da base 2 a base 16**. Dobbiamo raggruppare il numero scritto in base 2 partendo da sinistra in gruppi di quattro cifre e tradurre con la corrispondente cifra in base 16. .. list-table:: Tabella37 :header-rows: 0 * - Numero scritto in base 2 - 1 1 - 0 1 0 0 - 1 1 1 0 - 0 1 0 1 * - Numero scritto in base 16 - 3 - 4 - E - 5 :math:`( 11010011100101 )_{2}=( 34E5 )_{16}` #. Convertire in base 4, 8 e 16 i seguenti numeri scritti in base 2: :math:`( 101 )_{2} ; ( 100011 )_{2} ; ( 1111110101 )_{2} ; ( 10100100 )_{2} ; ( 1101 )_{2}` #. Convertire in base 2 i seguenti numeri scritti in base 16: :math:`( 12 )_{16} ; ( A )_{16} ; ( 1C3 )_{16} ; ( AB )_{16} ; ( 223 )_{16}` **Perché è importante la base 2?** Tutti gli strumenti elettronici che utilizziamo hanno bisogno di tradurre le informazioni che inseriamo in stati fisici della macchina. Il metodo più semplice per tradurre in linguaggio macchina le nostre informazioni è utilizzare la base 2: composta solo dai simboli 0 e 1. La base 2 è quindi l'alfabeto a disposizione delle macchine per comprendere e rispondere alle nostre richieste. Se si utilizzasse la base 10 dovremo far riconoscere dall'apparato dieci differenti simboli che devono essere tradotti in dieci differenti stati. A partire da questa informazione elementare detta **bit** (compressione dall'inglese di **bi**nary digi**t**) è possibile costruire informazioni più complesse sotto forma di sequenze finite di 0 e di 1. Attraverso la codifica binaria si è in grado di rappresentare caratteri, numeri, istruzioni di programma ma anche immagini, suoni e video. Il primo multiplo del bit è il **Byte** che è formato da una sequenza di 8 bit: .. list-table:: Tabella38 :header-rows: 0 * - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 Con una sequenza di 8 bit possiamo codificare fino a 256 caratteri attraverso il codice ASCII. Quando digitiamo un carattere nella tastiera del PC mandiamo un impulso che è una sequenza di 8 bit. Vediamo alcuni esempi della codifica binaria dei caratteri .. list-table:: Tabella39 :header-rows: 0 * - Carattere - In base 2 - Numero decimale * - A - 0 1 0 0 0 0 0 1 - 65 * - a - 0 1 1 0 0 0 0 1 - 97 * - M - 0 1 0 0 1 1 0 1 - 77 * - m - 0 1 1 0 1 1 0 1 - 109 * - 0 - 0 0 1 1 0 0 0 0 - 48 * - 1 - 0 0 1 1 0 0 0 1 - 49 * - à - 1 0 1 0 0 0 0 0 - 160 * - ò - 1 0 1 0 0 0 1 0 - 162 Anche il byte ha i suoi multipli. Eccone alcuni indicati nella seguente tabella: +----------+-------+-----------------+----------------------------------+----------------+----------------------------------+ | | | Sistema internazionale | Utilizzo in informatica | +----------+-------+-----------------+----------------------------------+----------------+----------------------------------+ | Nome | Marca | Potenze del 10 | Valore decimale rispetto ai byte | Potenze del 2 | Valore decimale rispetto ai byte | +----------+-------+-----------------+----------------------------------+----------------+----------------------------------+ | byte | B | :math:`10^{0}` | :math:`1` | :math:`2^{0}` | :math:`1` | +----------+-------+-----------------+----------------------------------+----------------+----------------------------------+ | kilobyte | kB | :math:`10^{3}` | :math:`1000` | :math:`2^{10}` | :math:`1.024` | +----------+-------+-----------------+----------------------------------+----------------+----------------------------------+ | megabyte | MB | :math:`10^{6}` | :math:`1.000.000` | :math:`2^{20}` | :math:`1.048.576` | +----------+-------+-----------------+----------------------------------+----------------+----------------------------------+ | gigabyte | GB | :math:`10^{9}` | :math:`1.000.000.000` | :math:`2^{30}` | :math:`1.073.741.824` | +----------+-------+-----------------+----------------------------------+----------------+----------------------------------+ | terabyte | TB | :math:`10^{12}` | :math:`1.000.000.000.000` | :math:`2^{40}` | :math:`1.099.511.627.776` | +----------+-------+-----------------+----------------------------------+----------------+----------------------------------+ **Osservazione** E' noto che i prefissi kilo- Mega- e Giga- corrispondono a 1.000 , 1.000.000 (un milione) e 1.000.000.000 (un miliardo), mentre nell’informatica vengono impropriamente usati per indicare particolari potenze di 2. Tutto questo genera confusione: per esempio un disco fisso che da specifiche dovrebbe garantire una capacità di archiviazione pari a 160 gigabyte, quando ne viene visualizzata la dimensione arriva poco oltre 149 gigabyte e i produttori giocano su questa “incertezza”. I produttori fanno i conti “imbrogliando”. Un PC che viene dichiarato con un hard disk da 160 GB vengono trasformati in byte moltiplicando per :math:`10^{9}` . Ma quando verifichiamo la grandezza del disco sull'elaboratore, il computer divide per :math:`2^{30}` . :math:`( 1,6 \cdot 10^{11} )\text{ :}( 1,07410^{9} ) = 1,49 \cdot 10^{2}` . Solo per questo “imbroglio” ci siamo persi 11 GB. #. Perché un DVD scrivibile quando si compra dichiara una capacità di 4,7 GB e invece ha una capacità reale di 4.3?Un CD-R dichiara una capacità di 700 MB. Quale è la sua capacità reale?.. tab[667,57 MB] Operazioni in base diversa da dieci ---- Le quattro operazioni con i numeri in base diversa da dieci possono effettuarsi con gli stessi algoritmi utilizzati per i numeri naturali. Addizione ^^^^ Esempio .. list-table:: Tabella41 :header-rows: 0 * - + - 0 - 1 * - 0 - 0 - 1 * - 1 - 1 - 10 *Eseguire l'addizione in base 2 tra*:math:`101011_{2}` * e *:math:`10011_{2}` Dobbiamo tradurre in base due quello che facciamo in base dieci. Abbiamo perciò bisogno di costruire la tavola di addizione in base due che riportiamo a lato. La tavola, o tabellina, è piuttosto semplice, bisogna solo fare attenzione che in base due si ha 1+1=10, perché il 2 si scrive appunto 10 in base due. .. list-table:: Tabella42 :header-rows: 0 * - **Riporti** - - - - **1 ** - **1 ** - - * - - 1 - 0 - 1 - 0 - 1 - 1 - + * - - - 1 - 0 - 0 - 1 - 1 - * - - 1 - 1 - 1 - 1 - 1 - 0 - Mettiamo i numeri in colonna (vedi a fianco) e cominciamo ad addizionare a partire dalle unità: :math:`1 + 1 =0` , scrivo :math:`0` e riporto :math:`1` . Nella colonna di ordine superiore trovo :math:`( 1 + 1 ) + 1 =0 + 1 =1` Scrivo :math:`1` e riporto :math:`1` . Nella colonna di ordine superiore trovo :math:`1 + 0 + 0 =1` scrivo :math:`1` senza riportare alcunché. Continuo in questo modo fino ad esaurire tutte le cifre da addizionare. Facciamo la verifica nell'usuale sistema decimale: :math:`( 101011_{2} =43 )+( 10011_{2} =19 ) =( 111110_{2} =62 )` Esempio .. list-table:: Tabella43 :header-rows: 0 * - + - 0 - 1 - 2 - 3 - 4 * - 0 - 0 - 1 - 2 - 3 - 4 * - 1 - 1 - 2 - 3 - 4 - 10 * - 2 - 2 - 3 - 4 - 10 - 11 * - 3 - 3 - 4 - 10 - 11 - 12 * - 4 - 4 - 10 - 11 - 12 - 13 *Eseguire la somma tra **la somma **in base 5 tra*:math:`34231_{5}` * e *:math:`4341_{5}` Costruiamo la tavola di addizione in base cinque: ricordiamo che 4+1=10, 4+2=11, ecc. .. list-table:: Tabella44 :header-rows: 0 * - **Riporti ** - **1** - **1** - **1** - - - * - - 3 - 4 - 2 - 3 - 1 - + * - - - 4 - 3 - 4 - 1 - * - - 4 - 4 - 1 - 2 - 2 - Mettiamo i numeri in colonna e cominciamo ad addizionare a partire dalle unità: :math:`1 + 1 = 2` scrivo :math:`2` senza riporto. Nella colonna di ordine superiore trovo :math:`3 + 4 = 12` . Scrivo :math:`2` e riporto :math:`1` . Nella colonna di ordine superiore trovo :math:`( 1 + 2 ) + 3 = 3 + 3 = 11` scrivo :math:`1` e riporto :math:`1` . Procedendo verso sinistra ora trovo :math:`( 1 + 4 ) + 4 = 10 + 4 = 14` scrivo :math:`4` e riporto :math:`1` . Infine :math:`1 + 3 = 4` . L'addizione è terminata. Verifica nel sistema decimale::math:`( 34231_{5} =2441 )+( 4341_{5} =596 ) =( 44122_{5} =3037 )` #. Eseguire le seguenti addizioni in base 2 .. list-table:: Tabella45 :header-rows: 0 * - 1 - 1 - 1 - 1 - 0 - 1 - + - - 1 - 0 - 1 - 1 - 0 - 1 - + - - 1 - 0 - 1 - 1 - + - - 1 - 0 - 1 - 1 - + - - 1 - 0 - 1 - 1 - 1 - + * - - 1 - 0 - 1 - 1 - 0 - - - - 1 - 1 - 1 - 1 - 1 - - - - 1 - 1 - 1 - - - 1 - 1 - 0 - 1 - - - 1 - 1 - 0 - 0 - 1 - * - - - - - - - - - - - - - - - - - - - - - - - 1 - 0 - 1 - 1 - - - - 1 - 1 - 0 - 0 - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #. Eseguire le seguenti addizioni in base 5 .. list-table:: Tabella46 :header-rows: 0 * - - 3 - 4 - 2 - 4 - 0 - 1 - + - - 2 - 0 - 2 - 4 - 0 - 1 - + - - 2 - 3 - 4 - 1 - + - - 1 - 4 - 0 - 1 - + - - 4 - 3 - 2 - 1 - + * - - - 2 - 3 - 1 - 4 - 2 - - - - - - 4 - 3 - 4 - - - - 4 - 4 - 4 - - - 3 - 1 - 1 - 2 - - - 1 - 2 - 3 - 4 - * - - - - - - - - - - - - - - - - - - - - - - - - - 3 - 4 - 4 - - - - 3 - 4 - 0 - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #. Eseguire le seguenti addizioni in base 3 .. list-table:: Tabella47 :header-rows: 0 * - - 2 - 1 - 0 - 2 - 0 - 1 - + - - 2 - 0 - 2 - 1 - 0 - 1 - + - - 2 - 2 - 1 - 1 - + - - 1 - 0 - 2 - 2 - 1 - + - - 2 - 2 - 2 - + * - - - 2 - 1 - 2 - 1 - 2 - - - - 1 - 2 - 1 - 1 - 0 - - - - 2 - 0 - 2 - - - - 1 - 2 - 0 - 2 - - - 1 - 2 - 1 - * - - - - - - - - - - - - - - - - - - - - - - - - 1 - 1 - 2 - 0 - 1 - - - 2 - 1 - 2 - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Sottrazione ^^^^ Per la sottrazione ci possiamo servire delle stesse tabelle dell'addizione. Esempio :math:`101011_{2} -11111_{2}` .. list-table:: Tabella48 :header-rows: 0 * - **Riporti ** - **-1** - **-1** - **-1** - - - - * - - 1 - 0 - 1 - 0 - 1 - 1 - :math:`-` * - - - 1 - 1 - 1 - 1 - 1 - * - - 0 - 0 - 1 - 1 - 0 - 0 - Mettiamo i numeri in colonna e cominciamo a sottrarre partendo dalle unità: :math:`1 -1 =0` scrivo :math:`0` . Nella colonna di ordine superiore trovo di nuovo:math:`1 -1 =0` scrivo :math:`0` . Procedendo verso sinistra trovo :math:`0 -1` devo quindi prendere in prestito un unità di ordine superiore che messa davanti a 0 diviene :math:`10 -1 =1` scrivo :math:`1` e riporto -:math:`1` . Mi sposto ancora a sinistra e trovo :math:`( -1 + 1 ) -1 =0 -1` . Occorre prendere in prestito un'unità di ordine superiore :math:`10 -1 =1` . Scrivo :math:`1` e riporto :math:`-1` . Nella colonna a sinistra ho :math:`0` del minuendo, :math:`-1` del riporto e :math:`-1` del sottraendo. Occorre prendere a prestito un'unità di ordine superiore quindi :math:`10 -1 =1` a cui devo togliere :math:`1` del sottraendo: :math:`1 -1 =0` . Infine nella unità di ordine superiore devo addizionare il riporto :math:`-1` a :math:`1` e scrivo ancora :math:`0` .Il risultato della sottrazione è: :math:`1100` Verifica nel sistema decimale: :math:`( 101011_{2} =43 )-( 11111_{2} =31 ) =( 1100_{2} =12 )` Esempio * :math:`34231_{5} -4341_{5}` Ci serviamo della tavola di addizione in base cinque. .. list-table:: Tabella50 :header-rows: 0 * - .. list-table:: Tabella49 :header-rows: 0 * - **Riporti ** - **-1** - **-1** - **-1** - - - * - - 3 - 4 - 2 - 3 - 1 - - * - - - 4 - 3 - 4 - 1 - * - - 2 - 4 - 3 - 4 - 0 - + - 0 - 1 - 2 - 3 - 4 * - 0 - 0 - 1 - 2 - 3 - 4 * - 1 - 1 - 2 - 3 - 4 - 10 * - 2 - 2 - 3 - 4 - 10 - 11 * - 3 - 3 - 4 - 10 - 11 - 12 * - 4 - 4 - 10 - 11 - 12 - 13 Verifica:.:math:`( 34231_{5} =2441 )-( 4341_{5} =596 ) =( 24340_{5} =1845 )` #. Eseguire le seguenti sottrazioni in base 2 .. list-table:: Tabella51 :header-rows: 0 * - - 1 - 1 - 1 - 1 - 0 - 1 - - - - 1 - 0 - 1 - 1 - 0 - 1 - - - - 1 - 0 - 1 - 1 - - - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 0 - 0 - 1 - - * - - - 1 - 0 - 1 - 1 - 0 - - - - 1 - 1 - 1 - 1 - 1 - - - - 1 - 1 - 1 - - - - 1 - 1 - 1 - - - - 1 - 1 - 1 - 1 - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #. Eseguire le seguenti sottrazioni in base 5 .. list-table:: Tabella52 :header-rows: 0 * - 3 - 4 - 2 - 4 - 0 - 1 - - - - 2 - 0 - 2 - 4 - 0 - 1 - - - - 2 - 3 - 4 - 1 - - - - 3 - 4 - 4 - 4 - - - - 1 - 3 - 2 - 4 - 2 - - * - - 2 - 3 - 1 - 4 - 2 - - - - - - 4 - 3 - 4 - - - - 4 - 4 - 4 - - - 3 - 1 - 2 - 3 - - - - 4 - 2 - 2 - 4 - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #. Eseguire le seguenti sottrazioni in base 3 .. list-table:: Tabella25 :header-rows: 0 * - 2 - 1 - 0 - 2 - 0 - 1 - - - - 2 - 0 - 2 - 1 - 0 - 1 - - - - 2 - 2 - 1 - 1 - - - - 1 - 2 - 0 - 1 - - - - 2 - 1 - 0 - 0 - 1 - - * - - - - - - - - - - - - - - - - - - 2 - 0 - 2 - - - - 2 - 2 - 2 - - - 1 - 2 - 1 - 0 - 2 - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Moltiplicazione ^^^^ Adoperiamo lo stesso algoritmo usato per moltiplicare due numeri decimali utilizzando la tabella della moltiplicazione. Esempio :math:`101011_{2} \times101_{2}` Dobbiamo tradurre in base due quello che facciamo in base dieci. Abbiamo perciò bisogno di costruire la tavola della moltiplicazione in base due. .. list-table:: Tabella54 :header-rows: 0 * - - - 1 - 0 - 1 - 0 - 1 - 1 - ´ * - - - - - - 1 - 0 - 1 - * - - - 1 - 0 - 1 - 0 - 1 - 1 - * - - 0 - 0 - 0 - 0 - 0 - 0 - - - * - 1 - 0 - 1 - 0 - 1 - 1 - - - - * - 1 - 1 - 0 - 1 - 0 - 1 - 1 - 1 - .. list-table:: Tabella55 :header-rows: 0 * - ´ - 0 - 1 * - 0 - 0 - 0 * - 1 - 0 - 1 Verifica nel sistema decimale::math:`( 101011_{2} =43 )\times( 101_{2} =5 ) =( 11010111_{2} =215 )` Esempio .. list-table:: Tabella56 :header-rows: 0 * - - - 2 - 3 - 1 - ´ * - - - - 2 - 4 - * - - 2 - 0 - 2 - 4 - * - 1 - 0 - 1 - 2 - - - * - 1 - 2 - 1 - 4 - 4 - :math:`231_{5} \times24_{5}` .. list-table:: Tabella57 :header-rows: 0 * - ´ - 0 - 1 - 2 - 3 - 4 * - 0 - 0 - 0 - 0 - 0 - 0 * - 1 - 0 - 1 - 2 - 3 - 4 * - 2 - 0 - 2 - 4 - 11 - 13 * - 3 - 0 - 3 - 11 - 14 - 22 * - 4 - 0 - 4 - 13 - 22 - 31 Verifica nel sistema decimale :math:`( 231_{5} =66 )\times( 24_{5} =14 ) =( 12144_{5} =924 )` #. Moltiplica in base 2: :math:`111101_{2} \times 10110_{2}` ; :math:`101101_{2} \times11111_{2}` ; :math:`1011_{2} \times111_{2}` #. Moltiplica in base 5: :math:`2401_{5} \times42_{5}` ; :math:`431_{5} \times34_{5}` ; :math:`431_{5} \times34_{5}` #. Moltiplica in base 3: :math:`10201_{3} \times212_{3}` ; :math:`2101_{3} \times212_{3}` ; :math:`1211_{3} \times22_{3}` Divisione ^^^^ Anche per la divisione il procedimento è del tutto analogo a quello usato nel sistema decimale, la tavola da utilizzare è quella della moltiplicazione. Esempio :math:`11101_{2} \div 101_{2}` .. list-table:: Tabella61 :header-rows: 0 * - 1 - 1 - 1 - 0 - 1 - - 1 - 0 - 1 * - -1 - 0 - 1 - - - - 1 - 0 - 1 * - - 1 - 0 - 0 - - - - - * - - 0 - 0 - 0 - - - - - * - - 1 - 0 - 0 - 1 - - - - * - - - -1 - 0 - 1 - - - - * - - - 1 - 0 - 0 - - - - Dobbiamo tradurre in base due quello che facciamo in base dieci. La cifra di ordine più alto si ottiene dalla divisione di :math:`111` con :math:`101` . Il quoziente è :math:`1` , il resto si ottiene dalla differenza tra il dividendo e il prodotto del quoziente per il divisore. In questo caso il resto è :math:`10` . Si abbassa lo :math:`0` e otteniamo :math:`100` . Si ha :math:`100 \div 111 =0` . La seconda cifra del divisore è :math:`0` . La moltiplicazione di :math:`0` per il divisore dà :math:`0` . Il nuovo resto è :math:`100` a cui aggiungiamo l'ultima cifra del dividendo. Otteniamo :math:`1001` che viene divisa :math:`101` . Il quoziente termina con :math:`1` con il resto uguale a :math:`100` . Verifica nel sistema decimale: :math:`( 11101_{2} =29 ) \div ( 101_{2} =5 ) =( Quoziente \div 101_{2} =5 ; Resto \div 110 =4 )` .. list-table:: Tabella62 :header-rows: 0 * - - - 1 - 0 - 1 - ´ * - - - 1 - 0 - 1 - * - - - 1 - 0 - 1 - * - - 0 - 0 - 0 - ¾ - * - 1 - 0 - 1 - ¾ - - * - 1 - 1 - 0 - 0 - 1 - Eseguiamo la prova della divisione direttamente in base 2: :math:`dividendo =quoziente \times divisore + resto` .. list-table:: Tabella63 :header-rows: 0 * - 1 - 1 - 0 - 0 - 1 - + * - - - 1 - 0 - 0 - * - 1 - 1 - 1 - 0 - 1 - Il quoziente moltiplicato il divisore è uguale a :math:`11001` . Se a questo risultato aggiungiamo il resto :math:`100` otteniamo il dividendo :math:`11101` . Esempio * :math:`3402_{5} \div 42_{5}` Dobbiamo tradurre in base due quello che facciamo in base dieci. .. list-table:: Tabella64 :header-rows: 0 * - 3 - 4 - 0 - 2 - - 4 - 2 * - 3 - 2 - 3 - - - 4 - 1 * - - 1 - 2 - 2 - - - * - - - 4 - 2 - - - * - - - 3 - 0 - - - Il :math:`42` nel :math:`34` non ci sta. Prendiamo allora tre cifre :math:`340` . Il :math:`4` nel :math:`34` ci sta :math:`4` volte.:math:`4` è la cifra di ordine più alto del quoziente. Dobbiamo trovare il resto. Il resto si ottiene sottraendo il risultato della moltiplicazione tra :math:`4` e :math:`42` che è :math:`323` . Il resto è uguale :math:`12` . Si abbassa il :math:`2` e otteniamo :math:`122` . Il :math:`4` nel :math:`12` in base 5 ci sta una sola volta, infatti :math:`4 \times 2 = 13` . La seconda cifra del divisore è :math:`1` . La moltiplicazione di :math:`1` per il divisore dà :math:`42` . Sottraendo :math:`42` da :math:`122` si ottiene :math:`30` . Dato che :math:`30` è minore di :math:`42` la divisione intera è terminata. Verifica: :math:`( 3402_{5} =477 ) \div ( 42_{5} =22 ) =( Quoziente \div 41_{5} =21 ; Resto \div 30 =15 )` #. Eseguire le seguenti divisioni in base 2 .. multicols2 :math:`11101 \div 11` :math:`[ Q = 11 ; R = 1 ]` :math:`1011101 \div 100` :math:`[ Q = 1011 ; R = 1 ]` :math:`100011 \div 10` :math:`[ Q = 10001 ; R = 0 ]` .. endmulticols Eseguire le seguenti divisioni in base 5 .. multicols2 :math:`2304 \div 43` :math:`[ Q = 24 ; R = 12 ]` :math:`3310 \div 24` :math:`[ Q = 112 ; R = 12 ]` :math:`2012 \div 31` :math:`[ Q = 31 ; R = 1 ]` .. endmulticols **Copyright © Matematicamente.it 2011-12** .. figure:: ../images/immagini34.png :align: center :width: 3.41cm :height: 1.192cm Questo libro, eccetto dove diversamente specificato, è rilasciato nei termini della licenza **Creative Commons Attribuzione – Condividi allo stesso modo 3.0 Italia** (CC BY-SA 3.0) il cui testo integrale è disponibile al sito http://creativecommons.org/licenses/by-sa/3.0/it/legalcode Tu sei libero: di riprodurre, distribuire, comunicare al pubblico, esporre in pubblico, rappresentare, eseguire e recitare quest'opera, di modificare quest'opera, alle seguenti condizioni: **Attribuzione** — Devi attribuire la paternità dell'opera nei modi indicati dall'autore o da chi ti ha dato l'opera in licenza e in modo tale da non suggerire che essi avallino te o il modo in cui tu usi l'opera. **Condividi allo stesso modo** — Se alteri o trasformi quest'opera, o se la usi per crearne un'altra, puoi distribuire l'opera risultante solo con una licenza identica o equivalente a questa. **Autori** Claudio Carboncini: teoria, esercizi Anna Cristina Mocchetti: teoria, esercizi Antonio Bernardo: coordinamento, esercizi Germano Pettarin: esercizi Angela D'Amato: integrazioni Nicola Chiriano: correzioni Francesco Daddi: esercizi Erasmo Modica: teoria, esercizi Mauro Paladini: integrazioni, esercizi Vittorio Patriarca: integrazioni Giuseppe Pipino: integrazioni, esercizi Nicoletta Passera: esercizi Daniele Zambelli: esercizi risultati Luciano Sarra: correzioni Nicola De Rosa: correzioni, risultati esercizi Laura Todisco: correzioni Gemma Fiorito: correzioni Lucia Rapella: correzioni Paolo Baggiani: correzioni Simone Rea: osservazioni **Collaborazione, commenti e suggerimenti** Se vuoi contribuire anche tu alla stesura e aggiornamento del manuale Matematica C3 o se vuoi inviare dei commenti e/o suggerimenti scrivi a antoniobernardo@matematicamente.it **Versione del documento** Versione 3.1 del 24.04.2012