vuoi
o PayPal
tutte le volte che vuoi
Porte logiche
Sono dispositivi che elaborano i bit. Per rappresentare i bit uso i circuiti:
- Relè elettromagnetici (1940): circuito aperto/chiuso
- Tubi a vuoto (1940 – 1960): I generazione
- Transistor (1965): II generazione
- Circuiti integrati (1970): III generazione
- Microprocessori (1980 - ): V generazione
La legge di Moore: il numero di transistor su chip raddoppia ogni 2 anni
Le codifiche binarie
Assegnare una sequenza di bit per distinguere due alternative. La codifica può essere a lunghezza fissa (sono le più usate) e a lunghezza variabile.
I bit sono raggruppati in gruppi da 8 chiamati byte:
- Kilobyte (102)
- Megabyte (202)
- Gigabyte (302)
- Terabyte (402)
I LINGUAGGI DI PROGRAMMAZIONE
Il programma: sequenze di istruzioni che permettono di eseguire un calcolo. I programmi implementano algoritmi, cioè metodi per risolvere problemi computazionali. I programmi sono l'espressione di
Algoritmi in un opportuno linguaggio formale. I linguaggi:
- Formali: formule chimiche, formule matematiche, linguaggi di programmazione. Il processo di analisi della forma sintattica è detto parsing. Sono privi di ambiguità, ridondanza e metafore.
- Di programmazione: categoria di linguaggio formale progettato per esprimere i calcoli. Ce ne sono tanti e quasi tutti consentono 4 istruzioni di: input (acquisire dati), output (invio dati), matematiche (somma, sottrazione, moltiplicazione, divisione), condizionali (eseguite in base a condizioni logiche) e ripetizioni (ripetere le istruzioni).
- Macchina: si ottiene unendo sequenze di bit. In origine ogni computer aveva il suo linguaggio macchina che variava in base all'architettura e i programmi non potevano essere trasferiti in processori di architetture diverse. Le istruzioni sono elementari e la scrittura del programma è complessa.
- Assembly: fu creato per rendere più comprensibile all'uomo il linguaggio macchina.
È composto da una sequenza di lettere inglesi
I linguaggi macchina e Assembly non sono più utilizzati.
- Di alto livello: le istruzioni sono semplici o complesse, macomprensibili dall’uomo. Il programma può essere eseguito susistemi diversi. L’utilizzo aumenta la produttività deiprogrammatori, la complessità dei programmi e la portabilità.
Compilatori e traduttori
Traducono il linguaggio del programmatore in linguaggio macchina(l’unico che il computer comprende).
Interprete
Traduce un comando alla volta ed è quindi più efficace e semplice
General purpose
Linguaggio di uso generale, non sono pensati per risolvere un problemaspecifico
Domain specific
Linguaggi specifici per dominio, progettati per una particolareapplicazione, come HTML I NUMERI
Sistema decimale
- Cifre da 0 a 9
- Base 10 il valore delle cifre è pensato per i multipli di 10
EX: 3 2 1 0+5 + +2×7502=7 ×10 × 10 0 ×10 10
Sistema
binario- Solo le cifre 0 e 1- Le cifre sono pensate per potenze della base 2
EX: 3 2 1 0+1 +0 +11101=1 ×2 ×2 ×2 ×2
Cifra più Cifra menosignificativa significativa
5 - Per decodificare un binario si utilizza il contributo degli 1,ignorando gli 0
EX: 1 0 0 0 0 1 = 32 + 1=33
32 16 8 4 2 1
02 2 2 2 2 2
Le proprietà:
Le potenze di si rappresentano come un 1 seguitoo k2da k zeri
Per moltiplicare un numero per basta aggiungere ko k2zeri
Se un numero finisce con k zeri allora è divisibile pero k2
- Il sistema binario è comodo per il computer ma non perl’uomo. Dei compromessi tra le necessità dell’uomo e dellamacchina sono il sistema ottale (base 8) e il sistemaesadecimale (base 16)
Sistema ottale- Si usano le cifre da 0 a 7 e a ciascuna corrispondono 3 cifrebinare
Sistema esadecimale- Si usano le cifre da 1 a 9 e le lettere dalla a alla f- A ciascuna cifra esadecimale corrisponde un gruppo di 4cifre binarie- Una coppia di
cifre esadecimali rappresenta un byte
CONVERSIONE DI BASE
Da decimale a binario
Ho 2 casi:
- Se il numero è piccolo:
- 3 2 1 0 = 8 + 2 + 2 + 1 = 10112 + 1 = 22 + 21 + 20 = 10
- Se il numero è grande: prendo il numero e lo divido per 2 approssimando per difetto. Se è pari scrivo 0, se è dispari scrivo 1
Da binario a decimale
EX: 3 2 1 0 = 1 + 1 + 0 + 1 = 8 + 4 + 1 = 13
10112 = 23 + 21 + 20 = 10
Da ottale a decimale
EX: 3 2 1 0 = 2 + 0 + 6 + 5 = 38
3 × 82 + 2 × 81 + 1 × 80 = 88
Da ottale a binario
Si sostituisce ciascuna cifra ottale con la tripletta corrispondente in binario
EX: 1025 = 110 011 1002
Da binario a ottale
Si aggiungono zeri in modo da dividere la cifra in gruppi di 3 e si sostituisce la corrispondente tripletta con la cifra ottale
EX: 151101 = 000 111 0108
Da esadecimale a decimale
EX: 2 1 0 = 2 + 12 + 10 = 46
2CA = 2 × 162 + 12 × 161 + 10 × 160 = 714
Da esadecimale a binario
Si sostituisce a ciascuna cifra esadecimale il corrispondente gruppo binario
EX: 10110010102 = CA16
binario a esadecimaleEX: =21010111000 B 82 LE CODIFICHE NUMERICHE
Interi positivi
Si usano 8 bit numeri che vanno da 0 a 255 inclusi
16 bit numeri tra 0 e 65 535 (inclusi)
32 bit tra 0 e 4294967295(inclusi)
64 bit tra 0 e 18446744073709551615(inclusi)
Interi con segno
- Rappresentati in modulo e segno
- Si usa il bit più significativo per stabilire il segno (0 se n è positivo e 1 se n è negativo)
- Le altre cifre stabiliscono il modulo. Ci sono però due rappresentazioni per lo 0
Complemento a uno
- I numeri positivi sono convertiti in base 2
- I numeri negativi vengono sottratti al numero 1111111……11 per poi essere convertiti
- I bit vengono invertiti nei numeri negativi in modo da cambiare il segno
- Ci sono 2 rappresentazioni per lo 0 e le operazioni non sono immediate
Complemento a due
- Per cambiare il segno si invertono i bit dei numeri negativi e si somma 1
- I numeri positivi vengono convertiti in base 2
- Intorno allo 0 il comportamento è
naturale (sono tutti zeri)- Si ignora l'overflow- E il più usato- Si usano 8 bit tra -128 e 127 inclusi16 bit tra -32768 e 32767 inclusi32 bit tra−2147483648e2147483647(inclusi)64 bit tra−2147483648e2147483647(inclusi)OverflowDati 2 numeri di n bit, il valore della loro somma o moltiplicazione, può superare il valore massimo di n −12. Questo può determinare l'interruzione dei programmi.
Numeri non interi: L'insieme dei numeri reali non può essere codificato, l'insieme dei numeri relativi invece sì. I calcolatori non separano la parte frazionaria, ci sono quindi due soluzioni:
- Rappresentazione fixed point (a virgola fissa): si rappresenta un numero intero in base 2. Si utilizza in ambito scientifico.
- Rappresentazione floating point (a virgola mobile): consente di rappresentare numeri molto piccoli o molto grandi. Un bit indica il segno, un numero di bit fissato indica l'esponente della base 2 e gli altri.
Il codice di ogni istruzione deve specificare: l'operazione da eseguire, gli operandi su cui eseguire le operazioni e la destinazione dove memorizzare il risultato.
Indirizzamento:
- Indirizzamento implicito: l'operando si trova in una posizione fissa che non viene codificata.
- Indirizzamento immediato: gli operandi assumono valori fissi.
- Indirizzamento diretto: nell'istruzione è direttamente codificato un codice a cui accedere.
- Indirizzamento indiretto: nell'istruzione è codificato un codice che contiene l'indirizzo di memoria dell'operando.
- Indirizzamento indicizzato: l'indirizzo dell'operando si ottiene combinando l'indirizzo base e l'indice.
Esecuzione delle istruzioni:
- Fetch: il contenuto dell'indirizzo memorizzato nel Program Counter viene copiato nell'Instruction Register.
- Execute: l'istruzione memorizzata nell'Instruction Register viene eseguita utilizzando gli operandi specificati e il risultato viene memorizzato nella destinazione specificata.