











































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
In questo documento viene spiegato come convertire un numero da base 10 a base 2/16 e viceversa + complemento a due/uno + codifica gray + codifica in virgola fissa e mobile + diversi esercizi di consolidamento
Tipologia: Schemi e mappe concettuali
1 / 51
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!












































elaboratori elettronici. In questa definizione ci sono 3 concetti: Rappresentazione dell’informazione; Descrizione del processo di elaborazione (ovvero si indica l’operazione da fari sui dati); Costruzione di un elaboratore elettronico in grado di eseguire il processo di elaborazione (hardware).
trasformazione/elaborazione dell’informazione. I dispositivi elettronici si dividono in due categorie:
elaborazione (possono svolgere anche operazioni complesse);
elaborazione definito dall’utente, l’elettronica è costruita in modo che possa eseguire le operazioni più semplici possibili, l’utente finale ha la possibilità di comporre queste operazioni semplici in modo da far svolgere al dispositivo operazioni più complesse: ES. PC, Tablet, Smartphone.
Il mondo esterno al nostro elaboratore viene rappresentato da Von Neumann con il nastro di lettura/scrittura. Sul nastro di lettura ci sono i dati iniziale che vengono dati dall’utente, i nastri inizialmente erano caratterizzati da una scheda perforata, adesso invece si usano dispositivi magnetoottici. I dati caricati sul nastro di lettura, vengono letti e tipicamente come prima operazione l’elaboratore carica in memoria i dati stessi. I nastri di scrittura servono per rappresentare il risultato finale da fornire all’utente. I nastri di lettura/scrittura possono essere più di uno. Chiaramente tutte queste componenti devono essere interconnessi: questo avviene grazie ai bus. L’architettura di Von Neumann trova un’applicazione immediata e diretta nelle architetture hardware dei nostri dispositivi. Possiamo pensare al dispositivo programmabile come la coppia CPU-MEMORIA dove la CPU ESEGUE DELLE OPERAZIONI PRELEVANDO GLI OPERANDI E L’OPERAZIONE DA ESEGUIRE DALLA MEMORIA CENTRALE. Questo è lo schema logico da tenere in mente quando si parla di dispositivo programmabile. ALGORITMO: un insieme di operazioni che devono essere seguite in un dato ordine al fine di risolvere il problema dato di tipo più complesso. Le operazioni elementari che possiamo utilizzare per definire il nostro algoritmo sono le istruzioni di base che il nostro dispositivo elettronico è in grado di eseguire direttamente in hardware, il costruttore delle CPU costruiscono l’hardware elettronico in grado di eseguire determinate operazioni, l’insieme di operazioni di base si chiama INSTRUCTION SET. L’ISTRUCTION SET sono l’insieme di istruzioni che il nostro dispositivo elettronico è in grado di eseguire perché il costruttore ha già costruito esso in grado di poter eseguire quel tipo di operazioni. Chiamata RAM
MULT xxx moltiplica il valore dell’accumulatore con il valore nella cella xxx della memoria, il risultato è nell’accumulatore; DIV xxx divide il valore nell’accumulatore con il valore nella cella xxx della memoria, il risultato è nell’accumulatore.
Una macchina astratta può essere realizzata in due modi: HARDWARE Molto efficiente; Poco flessibile come soluzione (perché non posso far evolvere il mio linguaggio a piacimento); Per macchine complesse i costi possono essere molto alti. SIMULAZIONE SOFTWARE Meno efficiente; Costi ridotti (posso far evolvere il linguaggio a un livello più mantenendo i costi per l’hardware fissi). Dato un certo algoritmo A che si vuole eseguire sulla macchina M è necessario descrivere A utilizzando il linguaggio Lm eseguibile direttamente dalla macchina M. Gli approcci per passare da un linguaggio di livello più alto a un linguaggio di livello più basso possono essere di due tipi: APPROCCIO INTERPRETATIVO : durante l’esecuzione del nostro programma scritto in L1 (scritto in un linguaggio più ad alto livello) viene effettuata l’interpretazione di ogni istruzione in una o più istruzioni in L0 (Phython, invece Java utilizza entrambi gli approcci: linguaggio intermedio o bytecode) -L’interpretazione introduce INEFFICIENZA durante l’esecuzione del programma; -L’interpretazione avviene ad ogni esecuzione del programma.
RAPPRESENTARE L’INFORMAZIONE ovvero descrivere un oggetto (astratto o concreto) attraverso l’uso di un simbolo o di una sequenza di simboli. Per rappresentare l’informazione si necessita di: ALFABETO ovvero l’insieme di simboli che possiamo utilizzare per rappresentare l’informazione; CODICE ovvero l’elenco di tutte le sequenze possibili che possiamo comporre utilizzando i simboli dell’alfabeto (Un codice è ammissibile per rappresentare l’informazione solo se la cardinalità dell’insieme del codice è maggiore o uguale alla cardinalità dell’insieme di oggetti che si vogliono rappresentare) (ATTENZIONE: il codice deve essere maggiore/uguale agli oggetti da rappresentare); CODIFICA che indica l’associazione da una parola del codice e il suo significato o oggetto che vogliamo rappresentare. La rappresentazione di un oggetto può anche essere non univoca. La rappresentazione dell’informazione può essere fatta attraverso due tipi di codici: CODICE A LUNGHEZA FISSA (la stragrande maggioranza dei dispositivi elettronici utilizzano dei codici a lunghezza fissa): in questo tipo di codice TUTTE LE PAROLE HANNO LA STESSA LUNGHEZZA n. Alcuni esempi di codice a lunghezza che si usano al di fuori del contesto informatico sono il codice fiscale (16 simboli) o il Codice IBAN; CODICE A LUNGHEZZA VARIABILE (ambiti applicativi più di nicchia):
n
Con questa formula possiamo andare a calcolare il numero di bit necessario per rappresentare un certo numero di oggetti: n=bit necessari N=oggetti che vogliamo rappresentare
Fissata opportunamente la lunghezza delle parole e avendo fissato il codice(dizionario), possiamo avere tante codifiche (le codifiche stabiliscono la relazione che c’è tra la rappresentazione e l’oggetto rappresentato, in altre parole è la convenzione che associa parola di codice ad oggetto e viceversa).
Le codifiche possono essere: RINDONDATI ovvero un solo oggetto può essere rappresentato da due o più parole, spesso vengono utilizzate nelle comunicazioni per evitare errori. AMBIGUE : vengono chiamate così le codifiche dove una singola parola di codice viene associata a una o più oggetti, Le COFICHE AMBIGUE NON SONO PERMESSE NEI DISPOSITIVI ELETTRONICI , questo perché il dispositivo elettronico non riesce autonomamente a disambiguare la rappresentazione; BIUNIVOCHE ovvero una codifica che permette di risalire dalla parola di codice all’oggetto rappresentato e viceversa.
Numeri naturali (unsigned integer); Numeri relativi (integer); Numeri reali (floating point); Testo (characters); Immagini; Suoni ; Video. Tutte queste informazioni vengono ricondotte a delle parole composte da {0,1}.
Nella numerazione posizionale l’alfabeto include un numero di simboli pari alla base di numerazione, per esempio: Base 2 : i numeri sono rappresentati attraverso 2simboli {0,1}; Base 8 , i numeri sono rappresentati con 8 simboli : {0,1,2,3,4,5,6,7}; Base 16 : i numeri vengono rappresentati utilizzando 16 simboli {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}. Quindi in altre parole , la base è pari al numero di simboli che possiamo utilizzare per rappresentare quel numero (cardinalità dell’insieme dell’alfabeto). Tenendo conto della base utilizzata la sequenza di simboli può assumere valori diversi. Per calcolare il valore numerico in una base generica n di una sequenza di simboli si procedere nel seguente modo:
3
2
1
0
4
3
2
1
0 Partendo da destra associamo un VALORE POSIZIONALE A OGNI CIFRA partendo da 0
2. Moltiplichiamo ogni singola cifra che compone la sequenza di simboli per la base elevato per **la sua posizione
2
1
0 Adesso moltiplichiamo ogni singola cifra per la base utilizzata elevata per il valore posizionale assegnato al punto precedente dopodiché sommiamo il tutto:
2
1
0 Tenendo conto che un numero sia composto da n elementi, che la sua posizione sia indicata il valore i e che la sua base sia rappresentata dal valore b: tutti questi passaggi possono essere riassunti con una formula
i = 0 n − 1
i
ARITMETICA IN BASE 2 (lezione 08/03/2021, fatta insieme al complemento a 2) Le operazioni aritmetiche in una base b seguono le stesse regole delle operazioni aritmetiche effettuate in base 10.
Se vogliamo rappresentare in base binaria i numeri da 0 a T avremo bisogno di che la lunghezza di ogni parola sia
Questo perché gli oggetti da rappresentare sono tutti i numeri da 1 a T più lo zero. In realtà questa formula non viene quasi mai utilizzata ma si preferisce fissare la lunghezza delle parole (n) e utilizzando una codifica naturale, sappiamo che tutti i numeri interi che possono essere rappresentati
n (^0) − 1
Questo è l’intervallo di numeri naturali che possono essere rappresentati con parole di n, nei nostri computer tipicamente si usano parole da 32bit/64 bit per rappresentare numeri interi, ciò vuol dire che il
rappresentano.
Dopo aver calcolato la quantità di numeri presenti tra a e b possiamo procedere come segue: **1) Fissiamo N=(a-b) +1;
Eseguo la codifica naturale
NUMERI RELATIVI: MODULO E SEGNO Anche in questo caso, visto l’insieme dei numeri relativi è infinito, riusciremo a rappresentare solo una sottoparte. Questo metodo di rappresentazione è incentrato sullo zero.
lo zero viene rappresentato due volte. Questa codifica non viene usata in nessuna dei dispositivi elettronici esistenti perché non è efficiente nel momento in cui vogliamo fare delle operazioni aritmetiche sui valori rappresentati.
Numero di bit
0
n − 1
E’ importante ricordarsi il RANGE della codifica Modulo e segno perché ci dà la possibilità di dimensionare opportunamente i nostri bit in base ai requisiti della nostra applicazione. Nella codifica MODULO E SEGNO, il nostro numero composto da n bit , il primo bit ovvero quello che sta più a sinistra assume il significato del SEGNO del numero , invece i restanti n-1 bit vengono utilizzati per rappresentare il modulo del numero che è sempre positivo e quindi possiamo utilizzare la codifica naturale per trasformalo da decimale in binario. Per rappresentare il segno si utilizza al primo bit : 1 : se il segno è negativo 0 : se il segno è positivo. Modulo del numero Bit segno
Esempio Conversione di numero in base 10 nella CODIFICA MODULO-SEGNO Andiamo a rappresentare il valore – 9 seguendo queste regole:
1. Fissiamo il numero di bit;
2
1
Facciamo il caso di dover rappresentare i numeri relativi da -10 a +20. Per dimensionare correttamente alla domanda posta sopra poniamo
n − 1
n − 1
n − 1 ≥ (^21) , fatto ciò possiamo risolvere il tutto
Il logaritmo in questione è compreso tra 4 e 5, sommiamo 1 al risultato del logaritmo perché deve essere portato a destra e quindi prendiamo il numero intero subito più grande del logaritmo.
maggiore di 6 più vicino. ATTENZIONE: quando si esegue la conversione di un numero si deve sempre capire quale codifica si deve utilizzare perché uno stesso numero binario può rappresentare diversi numeri decimali in base alla
Nel complemento a 2 si procede nel seguente modo: N >= 0 si usa la RAPPRESENTAZIONE NATURALE ; N<0 si fanno prima le seguenti operazioni :
n −| N | e dopodiché si applica la RAPPRESENTAZIONE NATURALE.
n − 1 −| N |+ 1 Fatto ciò possiamo applicare il trucchetto della sottrazione nei casi in cui abbiamo una sequenza di
Il range di numeri rappresentati in complemento a 2 è uguale a: n=Numero di bit
n − 1
0
( n − 1 )
n
Nel complemento a 2 non perdiamo più lo spazio per la ripetizione dello zero e rappresentiamo con n bit, 2^n numeri Il complemento a 2 ha una caratteristica: Il PRIMO BIT dei numeri positivi è uguale a 0; Il primo bit dei numeri negativi è uguale a 1. (ATTENZIONE QUESTI BIT SONO PARTE INTEGRANTE DEI NUMERIE E HANNO UN SIGNIFICATO COMPLETAMENTE DIVERSO DAL BIT DI SEGNO USATO NELLA CODIFICA MODULO E SEGNO).
Per trasformare un numero in complemento a due dobbiamo guardare il “bit di segno”, nel caso in cui: N>=0 possiamo usare direttamente la codifica naturale ; N< 0 : 1 )Come prima cosa dobbiamo fare l’operazione di complemento ovvero cambiare di segno al numero N;
N=101001 n= 101001 (OPERAZIONE DI COMPLEMENTO) 010111 +26????
Per calcolare il numero di bit necessari per poter rappresentare un numero in complemento a 2 è necessario ricordarsi il RANGE DEL COMPLEMENTO A DUE e porre la seguente disequazione: N=numero che voglio rappresentare
n − 1
n − 1
Fatto ciò risolvo applicando il logaritmo in base due. Esempio n=? N=
n − 1
n − 1
Per capire se il risultato di una somma in complemento a 2 è sbagliata ci si basa sui segni, se il segno del risultato è diverso dal segno dei due operandi allora il risultato è sbagliato. Se il segno dei due operandi è discorse, il risultato è sempre corretto.
vuole rappresentare non è rappresentabile con il numero di bit fissato.
Per rappresentare un numero in ECCESSO K, si aggiunge k al numero che si vuole rappresentare e si rappresenta il risultato seguendo la rappresentazione naturale RANGE DI NUMERI RAPPRESENTATI IN BIASED/ECCESSO K Tipicamente si sceglie k in modo da poter rappresentare lo stesso numero di numeri negativi e positivi n=Numero di bit
n
0