Anteprima
Vedrai una selezione di 5 pagine su 16
Programmazione I - Appunti Pag. 1 Programmazione I - Appunti Pag. 2
Anteprima di 5 pagg. su 16.
Scarica il documento per vederlo tutto.
Programmazione I - Appunti Pag. 6
Anteprima di 5 pagg. su 16.
Scarica il documento per vederlo tutto.
Programmazione I - Appunti Pag. 11
Anteprima di 5 pagg. su 16.
Scarica il documento per vederlo tutto.
Programmazione I - Appunti Pag. 16
1 su 16
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Struttura della macchina di Von Neumann

Viene utilizzata per contenere completamente o in parte i programmi inesecuzione: ogni programma occupa più o meno indirizzi, ma ha sempre un indirizzo di inizio e uno di fine. Nella memoria vengono anche caricati i dati che i programmi in esecuzione stanno utilizzando; - Periferiche di I/O; - Interfacce di Comunicazione: permettono alle periferiche di comunicare con gli altri componenti; - Bus: è un canale che collega tutti i componenti tra di loro. Figura 03: Struttura della macchina di Von Neumann 6 Program counter: registro nel quale viene salvato l'indirizzo di memoria della prossima istruzione da eseguire; dopo ogni esecuzione di un'istruzione viene incrementato. 7 Instruction register: registro che immagazzina l'istruzione in fase di elaborazione. 43.2 Esempio Di Programma (Assembly) // Programma per il calcolo della radice quadrata 1300 LOAD R1, 5000 1305 ZERO R2 1310 COPY R2, R3 1315 MULT
R3, R31320 JGEQ R1, R3, 1 3 3 51325 INC R21330 JUMP 13101335 STORE R2, 5 0 0 11340 END PL
La prima colonna indica gli indirizzi della memoria nella quale è stato col-locato il programma, la seconda le istruzioni utilizzate mentre la terza indica i registri (sia della memoria che della CPU) con i quali sono state fatte delle operazioni. Ogni comando ha un significato:
  • LOAD: copia il valore contenuto nell'indirizzo della memoria al registro della CPU;
  • ZERO: azzera il valore del registro;
  • COPY: copia in valore del primo registro nel secondo;
  • MULT: moltiplica il valore del primo registro per il secondo;
  • JGEQ: è un comando di salto condizionato, salta all'istruzione contenuta nell'indirizzo della memoria se il valore del primo registro è maggiore o uguale (Greater Or Equal) del secondo;
  • INC: incrementa il valore del registro di 1;
  • JUMP: è un comando di salto incondizionato, salta all'istruzione

contenu-ta nell'indirizzo della memoria;

  • STORE: copia il valore contenuto nel registro nell'indirizzo di memoria;
  • END P: termina il programma.

Ogni volta che un comando viene eseguito avviene una serie di operazioni chiamata fetch-execute, divisa in tre fasi:

  1. Fetch: la CPU carica l'istruzione da eseguire dalla memoria centrale e la deposita nell'instruction register;
  2. Decode: la CPU "capisce" cosa deve fare con l'istruzione da eseguire;
  3. Execute: la CPU eseguita l'istruzione e eventualmente interagisce con i registri (passando i loro valori alla ALU) e la memoria.

Una volta terminato il ciclo per un'istruzione ne inizia un altro per l'istruzione successiva, fino a quando il programma non termina.

4.1 Tipi Di Informazione

Per rappresentare i dati e le informazioni (foto, audio, video, testi, ...) vengono usate sequenze di 0 e 1. Le informazioni possono essere di

tipo:
  • Analogico: si hanno un numero infinito di bit, quindi bisogna introdurre delle approssimazioni, perdendo delle informazioni. Aumentando il numero di bit utilizzati si riduce l'approssimazione, ma aumenta la memoria utilizzata. Se i bit utilizzati si ripetono con lo stesso valore per un certo periodo è possibile effettuare delle compressioni, riducendo l'utilizzo della memoria. Alcuni formati non approssimano (loseless), mentre altri sì (lossy), riducendo ulteriormente la memoria occupata (artefatti di compressione, utilizzati spesso con foto, video e musica, nella quale le variabili da approssimare sono la velocità di campionamento e la frequenza di campionamento);
  • Digitale (discreta): il numero di bit utilizzati è finito, quindi le approssimazioni sono molto limitate. Le principali informazioni sono costituite da numeri e caratteri. I numeri si dividono in interi e "reali", e a loro volta i numeri interi si dividono

In naturali e relativi. I numeri vengono rappresentati attraverso uno o più numerali (ogni numero può avere più numerali); generalmente si usano sistemi posizionali di base 10 (cifre dallo 0 al 9), mentre con i bit viene utilizzato un sistema posizionale di base 2, in quanto possono assumere solo i valori 0 e 1.

Figura 04: Tipi di informazioni digitali (discrete)

64.2 I Sistemi Posizionali Utilizzati

Nel mondo dell'informatica vengono utilizzati 3 sistemi posizionali oltre a quello di base 10, e sono:

  • Sistema posizionale di base 2 (binario): vengono utilizzati solo i valori 0 e 1. Un numero scritto in binario avrà quindi questo aspetto: 010011010. Viene utilizzata una quantità definita di bit, generalmente di 8 in 8 (8 -> 16 - ... bit 256 - 65536 - ... possibili valori );
  • Sistema posizionale di base 16 (esadecimale): vengono usati i numerali dallo 0 al 9 e le lettere dalla A

alla F. Un numero scritto in esadecimale 2B5F potrebbe allora essere: 16

Sistema posizionale di base 8 (ottale): vengono utilizzati i valori dallo 0 al 7. Un numero scritto in ottale avrà questo aspetto: 84.

Conversione Da Base X A Base 10

Per convertire un numero scritto con un sistema posizionale di base qualsiasi ad un sistema posizionale di base 10, basta moltiplicare il valore del numerale per il valore posizionale elevato alla posizione del numerale:

posizioneP * N = (nbase).10N

Esempio: Da base 2 a base 10

1010011101 = N2 100 2 3 4 7

N = 1 * 22 + 1 * 23 + 1 * 24 + 1 * 27

N = 1 + 4 + 8 + 16 + 128

N = 157

Esempio: Da base 16 a base 10

10A4C1 = N16 100 1 2 3

N = 1 * 162 + 12 * 163 + 4 * 164 + 10 * 161

N = 1 + 192 + 1024 + 4096

N = 4217

Esempio: Da base 8 a base 10

10421502 = N8 100 2 3 4 5

N = 2 * 82 + 5 * 83 + 1 * 84 + 2 * 85 + 4 * 86

N = 2 + 320 + 512 + 1024 + 4096

8192 + 13107210N = 14009810

74.4 Conversione Da Base 10 A Base X

Per convertire un numero scritto con un sistema posizionale di base 10 ad un sistema posizionale di base qualsiasi, si divide il numerale per la base del sistema posizionale e si continua dividendo il resto della divisione precedente fino a quando il risultato della divisione è 0. N

Esempio: Da a10 2N = 15710157 | 78 resto 178 | 39 resto 039 | 19 resto 119 | 9 resto 19 | 4 resto 14 | 2 resto 02 | 1 resto 01 | 0 resto 1N = 100111012 2

Esempio: Da a10 16N = 421771042177 | 2636 resto 12636 | 164 resto C164 | 10 resto 410 |0 resto AN = A4C116 16

Esempio: Da a10 8N = 14009810140098 | 17512 resto 217512 | 2189 resto 02189 | 273 resto 5273 | 34 resto 134 |4 resto 24 |0 resto 4N = 4215028 8

84.5 Conversione Da Base X A Base Y

Per convertire un numero scritto con un sistema posizionale di base qualsiasi ad un altro sistema posizionale con una base qualsiasi, si

esegue un passaggio intermedio, passando attraverso il sistema decimale: → → →N N = N N Nx y x 10 y

Alcune conversioni non necessitano di passaggi intermedi, in quanto risultano molto più semplici.

4.5.1 Conversione Da Base 2 A Base 8

Si raccolgono le cifre a gruppi di 3 (partendo da destra) e si convertono i gruppi di 3 cifre separatamente gli uni dagli altri.

Esempio:

N = 10101101012

N = (1)(010)(110)(101)2

101 = 52 8

110 = 62 8

101 = 22 8

1 = 1 8

N = 12658

Operazione inversa (se i numeri convertiti non occupano 3 bit bisogna utilizzarli tutti e 3 aggiungendo gli 0 necessari):

N = 12658

1 = 0018

22 = 0108

26 = 1108

25 = 1018

2 = 2

N = (001)(010)(110)(101)2

N = 10101101012

94.5.2 Conversione Da Base 2 A Base 16

Si raccolgono le cifre a gruppi di 4 (partendo da destra) e si convertono i gruppi di 4 cifre separatamente gli uni dagli altri.

Esempio:

N = 10101101012

N = (10)(1011)(0101)2

10 = 2

161011 = B2

160101 = 52

16N = 2B516‌

Operazione inversa (se i numeri convertiti non occupano 4 bit bisogna uti-lizzarli tutti e 4 aggiungendo gli 0 necessari):

N = 2B516

2 = 001016

2B = 101116

25 = 010116

2N = (0010)(1011)(0101)

2N = 1010110101

24.6 Operazioni In Binario

Con il sistema di numerazione binario, così come con il sistema decimale, è pos-sibile effettuare le operazioni di somma, sottrazione, moltiplicazione e divisionetra due numeri. Ecco alcuni esempi:

−10110101 + 10011010101011 = 110100 =11100000 1100110

Eccezione: come detto in precedenza, per i numeri in binario viene utilizzatauna quantità di bit prestabilita. Prendiamo per esempio 2 numeri di 8 bit;sommandoli è possibile che servano più di 8 bit per via di eventuali riporti, si8ha allora un caso di overflow .

8 Overflow: il valore del risultato non corrisponde alla realtà in quanto il numero di bitprestabilito per l’operazione

eseguita non è in grado di contenere tutte le cifre del risultato della stessa. 104.7 I Numeri Relativi

Per rappresentare i numeri relativi esistono due metodi principali:

  • Rappresentazione con bit di segno: il primo bit a partire dalla destra viene usato per identificare il segno del numero (0 in questo modo si hanno possibili valori, in quanto lo 0 può essere rappresentato con due combinazioni diverse (10000000 e 00000000). Inoltre questa rappresentazione rende difficili per la ALU ottenere i risultati corretti;
  • Rappresentazione in complemento a 2: utilizzando questa rappresentazione non ci sono ridondanze, in quanto lo 0 è rappresentato soltanto dalla combinazione 00000000. In questo modo la ALU, pur non sapendo se sta operando con numeri naturali o relativi, ma restituisce sempre il risultato corretto (cosa che non avviene con la rappresentazione con bit di segno).
Dettagli
Publisher
A.A. 2013-2014
16 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher ChadBoss di informazioni apprese con la frequenza delle lezioni di Programmazione I 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 Milano o del prof Boldi Paolo.