Estratto del documento

Rappresentazione in base esadecimale

N• Per rappresentare valori sono necessariBase esadecimale cifre decimali A,Per ottenere una codifica più compatta si usa spesso la base 16. In base 16 ci sono, ovviamente 16 cifre: le da 0 a 9 e poiB, C, D, E, F che rappresentano i numeri che in base 10 sono rappresentati come 10, 11, 12, 13, 14, 15. La conversione da e verso la baseimpaccando2 si ottiene in maniera immediata i bit 4 a 4:La rappresentazione esadecimale è il modo più consuetò di esprimere indirizzi della memoria, che sono composti di 32bit e quindi codificatiin 8 cifre esadecimale.Parti frazionarieUn parte frazionaria è un numero razionale inferiore all’unità. La conversione di una parte frazionaria da base decimale a base binaria ebase di partenza arrivo.viceversa può essere effettuata applicando l’aritmetica dalla o quella diNel conto in base di arrivo, la parte frazionale è sviluppata in forma polinomiale nella base di partenza, poi i singoli

termini sono convertiti nella base di arrivo e infine sono eseguite le operazioni in base di arrivo.

Nel conto in base di partenza, viene eseguito un algoritmo di moltiplicazioni successive sostanzialmente uguale a quello delle divisioni successive: la parte frazionaria viene ripetutamente moltiplicata per due sottraendo ogni volta la parte intera del risultato. La sequenza delle parti intere sottratte fornisce da rappresentazione ricercata, la natura teorica del procedimento è giustificata dalla osservazione che se x<1 allora esiste una successione di valori binari.

Da cui segue LIE 12 che e quindi, essendo 2471 1ansegue.

Numeri interi senza segno.

Un intero senza segno serve a rappresentare una variabile dichiarata in C come istanza di tipo unsigned int.

unsigned int a;

Viene rappresentato su N bit di memoria, in forma posizionale in base 2: ai'.

La rappresentazione codifica tutti è soli i naturali tra 0 a 2-1 inclusi. Il numero di bits N può variare a seconda.

Dell'architettura dellamacchina, ma è comunemente uguale a 32. Il che significa che è possibile codificare i numeri da 0 a 2-1.

Caratteri

Un carattere serve a rappresentare una variabile in C come istanza di tipo char:

char c;

È rappresentato in memoria su 8 bit, che codificano un numero intero senza segno tra 0 e 255. La corrispondenza tra i valori numerici dell'intervallo [0, 255] e i caratteri è stabilita da una tabella standard, la tabella dei codici ASCII, che include:

  • I caratteri alfanumerici (cifre decimali, lettere minuscole e maiuscole)
  • I simboli di interpunzione e le parentesi
  • I simboli aritmetici
  • I caratteri di controllo (il segno di a capo, lo spazio,...)
  • All'intero 0 è associato un carattere speciale, ovvero '\0' utilizzato segno di terminazione nella codifica delle stringhe.

Tabella codifica ASCII

Interi con segno

Un intero con segno serve a rappresentare una variabile

dichiarata in c come istanza del tipo int: int a;

“complemento a 2”

Gli interi con segno sono rappresentati su N bit usando una rappresentazione in complemento a 2. In questa codifica, nello sviluppo polinomiale il bit più significativo (most significant bit), ha peso negativo mentre gli altri hanno invece peso positivo.

Il numero codificato è negativo se e solo se il bit MSB vale 1. Assegnata la rappresentazione di un numero, il suo opposto può essere determinato complimentando i bit uno a uno e sommando uno al risultato.

Uno dei casi di overflow è la somma di due numeri che hanno lo stesso segno e il risultato ha un segno opposto. In questo caso si verifica un overflow.

In una operazione di somma, può verificarsi una condizione di overflow, ovvero il risultato può eccedere la dinamica dei valori rappresentabili.

Nel caso di valori codificati come interi senza segno, l'overflow è manifestato dalla presenza di un riporto nella somma dei bit MSB. Nel caso di una codifica in complemento a 2, il riconoscimento dell'overflow è meno diretto.

in quanto è possibile un overflow solo se i due addendi hanno lo stesso segno. In fase di programmazione, quando si verifica un overflow tipicamente viene generata un eccezione che viene ignorata. L'effetto ultimo è che la somma produce un risultato secondo una aritmetica modular: sommando 1 al massimo valore positivo, si ottiene il minimo valore negativo.

Numeri in virgola mobile forma esponenziale

In generale, un numero reale può essere rappresentato come prodotto:

S = segno;

bit che codifica il mantissa;

c è un valore reale non negativo detto caratteristica;

B è un intero con segno detto base;

e è la di rappresentazione.

In generale, uno stesso valore può avere diverse rappresentazioni in forma esponenziale. La rappresentazione si dice in forma normale quando la mantissa soddisfa il vincolo:

In forma normale, la caratteristica c determina l'ordine di grandezza del valore rappresentato, mentre m è una

parte frazionaria che identifica il valore all'interno del suo ordine di grandezza.

La rappresentazione scientifica in forma normale è applicata per rappresentare valori dichiarati in c nel tipo Float:

float x;

I valori di tipo float sono codificati (secondo lo standard IEEE 754) usando 32 bit, così ripartiti:

s. 1 bit per il segno

m. 23 bit per la mantissa

c. 8 bit per la caratteristica

Il bit di segno s è 0 per i positivi e 1 per i negativi.

La caratteristica è rappresentata in forma polarizzata, anziché in complemento a 2 come gli interi con segno. Questa rappresentazione è detta anche rappresentazione in eccesso 127:

La mantissa è una parte frazionaria (ovvero un valore non negativo minore di 1): mantissa precisione finita.

La rappresentazione della con un numero finito di bit comporta un problema di L'impatto dell'errore di rappresentazione può essere ridotto usando valori in precisione copia che in c sono realizzati

con il tipo Double: double y;

I valori di tipo Double sono codificati su 64 bits: 1 di segno, i di caratteristica e 23+32 di mantissa.

Errori di aritmetica in precisione finita

Il problema della precisione finita non si limita al fatto che un valore razionale debba essere approssimato nel momento in cui viene codificato attraverso un float. Succede anche che un'operazione aritmetica su due valori float in generale restituisce un valore che non è codificabile a sua volta come float richiedendo una ulteriore approssimazione. In sostanza, l'insieme dei valori del tipo float non è chiuso rispetto a operazioni aritmetiche elementari quali la somma o il prodotto.

Per comprendere il problema è utile seguire il modo con cui nella unità aritmetica logica (ALU) di un processore viene eseguita l'operazione di somma di due valori float: le caratteristiche dei due addendi sono allineate al valore più alto facendo scorrere le caratteristiche dell'addendi

minore; la caratteristica comune viene portata a fattore e le die mantisse sono sommate; se necessario la caratteristica viene nuovamente fatta scorrere fino a riportare la mantissa in forma normale.

Rappresentazione delle istruzioni

Un programma è usualmente scritto usando un linguaggio di alto livello. Per essere eseguita, la codifica di alto livello del programma scritto in c (codice sorgente) deve essere tradotta in una sequenza di istruzioni di basso livello (codice assembly) che possano essere tradotte in forma numerica; questa operazione prende il nome di compilazione e viene eseguita dal compilatore.

Assembler

L'assembler è il linguaggio delle istruzioni che possono essere eseguite su un processore. Ogni processore ha il suo assembler e i due sono mutuamente connessi, esistendo una corrispondenza stretta tra l'organizzazione hardware del processore e la struttura delle istruzioni che esso può eseguire. Questa mutua dipendenza è bene

espressa dicendo che il processore è il suo assembler costituiscono un sistema di calcolo. In generale, sistemi di calcolo diversi si distinguono per dettagli che qualificano aspetti come la ricchezza delle istruzioni del linguaggio, l'efficienza delle esecuzioni delle sue istruzioni, la loro regolarità, la complessità tecnologica dell'hardware... i diversi sistemi però sono equivalenti per quanto attiene alla potenza espressiva: qualsiasi processore che abbiano un qualche senso pratico sono in grado di eseguire tutti è solo gli stessi programmi. Per questo la teoria della commutabilità è basata su un sistema astratto, la macchina di Turing, che qualifica la potenza espressiva di un sistema di un sistema di calcolo senza fare riferimento all'implementazione di uno specifico processore. Il valore di questa astrazione è sostenuta dalla cosiddetta tesi di Church, la quale postula che non sia possibile realizzare

Un sistema di calcolo capace di eseguire programmi che non possono essere eseguiti sulla macchina di Turing. Un sistema di calcolo che realizza la potenza espressiva della macchina di Turing si dice completo. Nella nostra trattazione interezza intuire concretamente in che modo un programma c possa essere tradotto in forma eseguibile. Per questo, piuttosto che la macchina di Turing, preferiamo considerare un sistema di calcolo concreto. In particolare consideriamo un frammento di un assembler di tipo RISC (Reduced Instruction Set Computer), il MIPS, che girava sui processori R4000 della Silicon Graphics alla fine degli anni 90. Calcolo delle espressioni e esecuzione di istruzioni semplici Per tradurre le espressioni del linguaggio c occorre innanzitutto qualcosa che realizzi le operazioni aritmetiche e logiche e gli assegnamenti. L'istruzione add a, b, c; calcola la somma di b con c e scrive il risultato in a. In modo analogo operano un numero di altre istruzioni come sub, mult, and,

Cherealizzano i diversi operatori aritmetici e logici. È rilevante osservare che add può realizzare un assegnamento quando uno dei due addendi vale 0: add a, b, 0; l'istruzione assembler assegna il valore di b alla variabile a. L'istruzione add ha sempre due addendi ed è la somma di più addendi si ottiene per associazione. Ad esempio, l'istruzione cx=a+b+c; viene tradotta in due istruzioni assembler e, quindi, verrà eseguita come: add tmp, a, b; add x, tmp, c; uno-a-molti: è rilevante osservare fino da questo caso elementare come tra le istruzioni c è assembler esista un rapporto una singola variabile temporanea istruzione c corrisponde a una o più istruzioni dell'assembler. Nella traduzione sono anche introdotte delle aggiuntive che non compaiono nel programma c. Per ragioni tecnologiche, le operazioni aritmetiche e logiche non sono eseguite su variabili in memoria ma su variabili contenute in un banco 32 di registri.

Contenuti all'i

contenuti all’i

Anteprima
Vedrai una selezione di 14 pagine su 63
Riassunto esame Fondamenti di informatica, Prof. Bilotta Stefano, libro consigliato Fondamenti di programmazione. Linguaggio C, strutture dati, algoritmi elementari, C++ (Società Editrice Esculapio, Bologna, 2017.), S. Berretti, L. Carnevali, E. Vicario Pag. 1 Riassunto esame Fondamenti di informatica, Prof. Bilotta Stefano, libro consigliato Fondamenti di programmazione. Linguaggio C, strutture dati, algoritmi elementari, C++ (Società Editrice Esculapio, Bologna, 2017.), S. Berretti, L. Carnevali, E. Vicario Pag. 2
Anteprima di 14 pagg. su 63.
Scarica il documento per vederlo tutto.
Riassunto esame Fondamenti di informatica, Prof. Bilotta Stefano, libro consigliato Fondamenti di programmazione. Linguaggio C, strutture dati, algoritmi elementari, C++ (Società Editrice Esculapio, Bologna, 2017.), S. Berretti, L. Carnevali, E. Vicario Pag. 6
Anteprima di 14 pagg. su 63.
Scarica il documento per vederlo tutto.
Riassunto esame Fondamenti di informatica, Prof. Bilotta Stefano, libro consigliato Fondamenti di programmazione. Linguaggio C, strutture dati, algoritmi elementari, C++ (Società Editrice Esculapio, Bologna, 2017.), S. Berretti, L. Carnevali, E. Vicario Pag. 11
Anteprima di 14 pagg. su 63.
Scarica il documento per vederlo tutto.
Riassunto esame Fondamenti di informatica, Prof. Bilotta Stefano, libro consigliato Fondamenti di programmazione. Linguaggio C, strutture dati, algoritmi elementari, C++ (Società Editrice Esculapio, Bologna, 2017.), S. Berretti, L. Carnevali, E. Vicario Pag. 16
Anteprima di 14 pagg. su 63.
Scarica il documento per vederlo tutto.
Riassunto esame Fondamenti di informatica, Prof. Bilotta Stefano, libro consigliato Fondamenti di programmazione. Linguaggio C, strutture dati, algoritmi elementari, C++ (Società Editrice Esculapio, Bologna, 2017.), S. Berretti, L. Carnevali, E. Vicario Pag. 21
Anteprima di 14 pagg. su 63.
Scarica il documento per vederlo tutto.
Riassunto esame Fondamenti di informatica, Prof. Bilotta Stefano, libro consigliato Fondamenti di programmazione. Linguaggio C, strutture dati, algoritmi elementari, C++ (Società Editrice Esculapio, Bologna, 2017.), S. Berretti, L. Carnevali, E. Vicario Pag. 26
Anteprima di 14 pagg. su 63.
Scarica il documento per vederlo tutto.
Riassunto esame Fondamenti di informatica, Prof. Bilotta Stefano, libro consigliato Fondamenti di programmazione. Linguaggio C, strutture dati, algoritmi elementari, C++ (Società Editrice Esculapio, Bologna, 2017.), S. Berretti, L. Carnevali, E. Vicario Pag. 31
Anteprima di 14 pagg. su 63.
Scarica il documento per vederlo tutto.
Riassunto esame Fondamenti di informatica, Prof. Bilotta Stefano, libro consigliato Fondamenti di programmazione. Linguaggio C, strutture dati, algoritmi elementari, C++ (Società Editrice Esculapio, Bologna, 2017.), S. Berretti, L. Carnevali, E. Vicario Pag. 36
Anteprima di 14 pagg. su 63.
Scarica il documento per vederlo tutto.
Riassunto esame Fondamenti di informatica, Prof. Bilotta Stefano, libro consigliato Fondamenti di programmazione. Linguaggio C, strutture dati, algoritmi elementari, C++ (Società Editrice Esculapio, Bologna, 2017.), S. Berretti, L. Carnevali, E. Vicario Pag. 41
Anteprima di 14 pagg. su 63.
Scarica il documento per vederlo tutto.
Riassunto esame Fondamenti di informatica, Prof. Bilotta Stefano, libro consigliato Fondamenti di programmazione. Linguaggio C, strutture dati, algoritmi elementari, C++ (Società Editrice Esculapio, Bologna, 2017.), S. Berretti, L. Carnevali, E. Vicario Pag. 46
Anteprima di 14 pagg. su 63.
Scarica il documento per vederlo tutto.
Riassunto esame Fondamenti di informatica, Prof. Bilotta Stefano, libro consigliato Fondamenti di programmazione. Linguaggio C, strutture dati, algoritmi elementari, C++ (Società Editrice Esculapio, Bologna, 2017.), S. Berretti, L. Carnevali, E. Vicario Pag. 51
Anteprima di 14 pagg. su 63.
Scarica il documento per vederlo tutto.
Riassunto esame Fondamenti di informatica, Prof. Bilotta Stefano, libro consigliato Fondamenti di programmazione. Linguaggio C, strutture dati, algoritmi elementari, C++ (Società Editrice Esculapio, Bologna, 2017.), S. Berretti, L. Carnevali, E. Vicario Pag. 56
Anteprima di 14 pagg. su 63.
Scarica il documento per vederlo tutto.
Riassunto esame Fondamenti di informatica, Prof. Bilotta Stefano, libro consigliato Fondamenti di programmazione. Linguaggio C, strutture dati, algoritmi elementari, C++ (Società Editrice Esculapio, Bologna, 2017.), S. Berretti, L. Carnevali, E. Vicario Pag. 61
1 su 63
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher MartyAnze di informazioni apprese con la frequenza delle lezioni di Fondamenti di informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Firenze o del prof Bilotta Stefano.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community