




















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
Una panoramica introduttiva all'informatica, esplorando la storia dei computer, i concetti fondamentali di codifica e rappresentazione dei dati, inclusi numeri, caratteri e immagini. La codifica binaria, il complemento a due, la rappresentazione in virgola fissa e in virgola mobile, e fornisce esempi pratici per comprendere questi concetti.
Tipologia: Appunti
1 / 28
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!





















Abaco (2000 a.C.) : o Primo strumento di calcolo, utilizzato per operazioni base come addizioni, sottrazioni, moltiplicazioni e divisioni. o Si basa sul sistema numerico posizionale.
Pascalina (1642) : o Ideata da Blaise Pascal, è considerata la prima calcolatrice meccanica. o Funzionava con ruote dentate e poteva eseguire solo addizioni. Macchina di Leibniz (1671) : o Perfezionamento della Pascalina, introdusse la moltiplicazione tramite una ruota dentata. o Leibniz fu anche il primo a concepire l'uso del sistema binario. Macchina analitica di Babbage (1837) : o Progettata da Charles Babbage, includeva componenti come una memoria e un'unità di controllo, anticipando le architetture moderne. o Utilizzava schede perforate per le istruzioni, ispirandosi al telaio Jacquard. Ada Lovelace : o Collaborò con Babbage alla macchina analitica, scrivendo il primo algoritmo per essa. È ricordata come la prima programmatrice della storia.
Macchina di Hollerith (1890) : o Sviluppata da Herman Hollerith per il censimento americano. o Utilizzava schede perforate per registrare e contare dati. Hollerith fondò la IBM. Mark I (1944) :
o Progettato da Howard Aiken ad Harvard, con il supporto di IBM. o Primo computer elettromeccanico in grado di eseguire operazioni complesse.
o Primo computer elettronico generale, progettato per calcolare traiettorie balistiche. o Utilizzava tubi a vuoto ed era enorme: occupava una stanza di 167 m². UNIVAC I (1951) : o Primo computer commerciale con programma memorizzato, grazie al contributo di John von Neumann. o La CPU era lunga più di 5 metri.
o Primo minicomputer economico, ideale per laboratori e scuole. o Avviò la corsa verso computer più piccoli e accessibili. Altair 8800 (1975) : o Basato sul processore Intel 8080, era il primo microcomputer accessibile al grande pubblico. Apple II (1977) : o Primo personal computer con successo commerciale, dotato di interfaccia semplice e memoria espandibile. Macintosh (1984) : o Primo computer a larga diffusione con interfaccia grafica user- friendly, un'innovazione di Apple.
Basati su processori a 8 bit, erano economici e facili da usare. Utilizzati come console per videogiochi o per introdurre alla programmazione. o Esempi: Commodore 64 , MSX.
Prima generazione (1940-1959): tubi a vuoto. Seconda generazione (1959-1964): transistor. Terza generazione (1965-1970): circuiti integrati. Quarta generazione (1971-1980): microprocessori e LSI/VLSI.
La comunicazione tra esseri umani e computer richiede una traduzione tra linguaggi umani (complessi) e linguaggi macchina (binari). Le informazioni nei computer sono rappresentate da bit (0 e 1), che costituiscono l'unità più piccola di informazione. Un byte è un gruppo di 8 bit, utilizzato per rappresentare un carattere o una quantità di dati.
Numeri naturali (senza segno) : rappresentati con il sistema posizionale, usando basi come 2 (binario), 10 (decimale), 16 (esadecimale). Numeri interi (con segno) : o Modulo e segno : un bit per il segno (+ o -), gli altri per il valore. o Complemento a due : metodo più utilizzato per rappresentare numeri con segno, consente di eseguire operazioni aritmetiche con semplicità. Numeri reali : o Virgola fissa : adatta a numeri con intervallo e precisione limitati. o Virgola mobile (standard IEEE) : rappresenta numeri con mantissa ed esponente, consentendo un intervallo più ampio e maggiore precisione. o Esempi : float (32 bit) e double (64 bit) per precisione differente.
I caratteri sono rappresentati tramite codici binari standardizzati per garantire compatibilità tra sistemi. Principali codifiche: o ASCII : 7 bit (128 caratteri). o ASCII esteso : 8 bit (256 caratteri). o Unicode : fino a 16 bit (65.536 caratteri), ideale per alfabeti complessi come il cinese. Esempio: il carattere 'A' può essere rappresentato come 01000001 in ASCII.
Le immagini digitali sono costituite da pixel , ciascuno dei quali rappresenta un punto dell'immagine.
Modelli di colore : o Bianco e nero : 1 bit per pixel. o Toni di grigio : 1 byte per pixel. o RGB (True Color) : 3 byte per pixel (16 milioni di colori). Compressione : o Lossless : senza perdita di dati (es. PNG). o Lossy : con perdita di dati (es. JPEG), riduce la qualità per risparmiare spazio. Formati comuni: JPEG, PNG, GIF, TIFF.
I suoni vengono digitalizzati campionando il segnale continuo in intervalli regolari e quantizzandolo in bit. Compressione audio : o Lossless : conserva la qualità originale. o Lossy : elimina le frequenze meno udibili per risparmiare spazio (es. MP3).
Tecniche per ridurre la quantità di memoria necessaria: o Lossless : adatta per dati sensibili, mantiene l'integrità (es. ZIP). o Lossy : elimina informazioni ridondanti o meno rilevanti, usata per immagini, video e audio. Esempio: i video utilizzano metodi come MPEG per codificare solo le differenze tra fotogrammi consecutivi.
Utilizzata nei circuiti logici dei computer. Le variabili booleane assumono solo due valori: 0 e 1. Operatori principali: AND, OR, NOT, rappresentati tramite tabelle di verità.
La notazione posizionale è un sistema di rappresentazione dei numeri in cui il valore di ogni cifra dipende sia dal suo valore intrinseco (il simbolo numerico) sia dalla posizione che occupa all'interno del numero.
N=6+0.625=6.62510N = 6 + 0.625 = 6.625_{10}
Se hai un numero in una base diversa e vuoi convertirlo in base 10:
N=2⋅64+3⋅8+1⋅1=128+24+1=15310N = 2 \cdot 64 + 3 \cdot 8 + 1 \cdot 1 = 128 + 24 + 1 = 153_{10}
In sistemi numerici con basi superiori a 10 , come la base 16 (esadecimale), i simboli numerici tradizionali ( 0,1,2,...90, 1, 2, ... 9) non sono sufficienti a rappresentare tutti i numeri. Per colmare questa lacuna, si usano le lettere dell'alfabeto per rappresentare i valori che vanno oltre il 9.
L'esadecimale utilizza 16 simboli :
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
I valori associati ai simboli sono: o 0=00 = 0, 1=11 = 1, ..., 9=99 = 9, o A=10A = 10, o B=11B = 11, o C=12C = 12, o D=13D = 13, o E=14E = 14, o F=15F = 15. Nel sistema esadecimale:
Quando superi il 9, si passa ai simboli alfabetici: o 1010=A1610_{10} = A_{16}, o 1110=B1611_{10} = B_{16}, o 1210=C1612_{10} = C_{16}, o 1310=D1613_{10} = D_{16}, o 1410=E1614_{10} = E_{16}, o 1510=F1615_{10} = F_{16}.
Supponiamo di convertire il numero 12310123_{10} in base 16:
12310=7B16123_{10} = 7B_{16}
Esempio: 3510⋅121035_{10} \cdot 12_{10}
35 × 12
2. Moltiplichiamo la prima cifra del moltiplicatore ( 22 ) per il moltiplicando ( 3535 ): a. 2⋅35=702 \cdot 35 = 70.
Risultato : A16⋅316=1E16A_{16} \cdot 3_{16} = 1E_{16}.
Dividiamo 12510125_{10} per 4104_{10}:
Risultato finale : 12510÷410=31125_{10} \div 4_{10} = 31 con resto 11.
Dividiamo 101121011_2 per 11211_2:
Risultato finale : 10112÷112=1121011_2 \div 11_2 = 11_2 con resto 10210_2.
Dividiamo 6458645_8 per 12812_8:
2. Rappresentazione binaria dei numeri negativi
I numeri negativi sono rappresentati invertendo tutti i bit del corrispondente numero positivo (complemento a uno) e aggiungendo 11 al risultato.
Numero positivo
Rappresentiamo il numero 55 su 44 bit:
Rappresentiamo il numero −5-5 su 44 bit:
Quindi, −510=10112-5_{10} = 1011_2 in complemento a due.
Esempio di Operazioni con il Complemento a Due
Somma: 5+(−3)5 + (-3)
a. 310=001123_{10} = 0011_2, b. Invertiamo i bit: 110021100_2, c. Aggiungiamo 11 : 11002+1=110121100_2 + 1 = 1101_2.
Risultato : 5+(−3)=25 + (-3) = 2.
Con 44 bit, calcoliamo 7+37 + 3:
Gli shift (traslazioni) sono operazioni che spostano i bit di un numero binario verso destra ( shift right ) o verso sinistra ( shift left ). Queste operazioni sono ampiamente utilizzate in informatica per manipolare dati binari, implementare operazioni aritmetiche e ottimizzare i calcoli.
Lo shift left sposta tutti i bit di un numero binario verso sinistra. I bit più a sinistra escono dalla rappresentazione, mentre gli spazi liberi a destra vengono riempiti con zeri.
Ogni bit viene spostato di un determinato numero di posizioni verso sinistra. Lo spazio libero a destra è riempito con 0. Lo shift left equivale a moltiplicare per potenze di 2 : o Spostare di 1 posizione = moltiplicare per 21=22^1 = 2, o Spostare di 2 posizioni = moltiplicare per 22=42^2 = 4, e così via. Esempio
Numero: 011020110_2 ( 6106_{10}).
11102→11112(mantiene il segno e vale ancora −1).1110_2 \rightarrow 1111_2 \quad (\text{mantiene il segno e vale ancora } -1).
Tipo di Shift Effetto Applicazioni Shift Left (SL) Sposta i bit verso sinistra, riempiendo con zeri.
Moltiplicazioni veloci per potenze di 2. Shift Right Logico (SRL)
Sposta i bit verso destra, riempiendo con zeri.
Divisioni veloci per potenze di 2. Shift Right Aritmetico (SRA)
Sposta i bit verso destra, mantenendo il bit di segno.
Divisioni veloci per numeri con segno.
La codifica binaria di numeri reali è un modo per rappresentare numeri con parti decimali (come 3.143.14) utilizzando il sistema binario. Questo viene fatto usando una struttura che include due componenti principali:
Questo schema è utilizzato nello standard IEEE 754 per la rappresentazione di numeri in virgola mobile.
Un numero reale in binario può essere rappresentato con tre parti principali:
Dividi iterativamente per 2 e registra i resti. Leggi i risultati dal basso verso l'alto.
Moltiplica iterativamente per 2: o La parte intera del risultato è il prossimo bit. o Continua con la parte frazionaria rimanente fino a raggiungere la precisione desiderata o 00.
Un numero binario viene normalizzato quando è scritto in una forma del tipo:
1.mantissa⋅2esponente1.\text{mantissa} \cdot 2^{
text{esponente}}1.mantissa⋅2esponente
La parte intera è sempre 11 1 (se il numero è diverso da 0). La mantissa contiene i bit significativi del numero dopo il 11 1. L' esponente sposta la virgola binaria (punto decimale) per rappresentare il numero originale.
L'esponente è spesso rappresentato con un bias (valore di offset per evitare esponenti negativi). La mantissa viene salvata senza il 11 iniziale, poiché è implicito nella rappresentazione normalizzata.
Semplicità di calcolo : o Le operazioni aritmetiche sono semplici e veloci, perché non è necessario gestire esponenti. Efficienza : o Adatto per dispositivi con risorse limitate, come microcontrollori.
Intervallo ristretto : o Non può rappresentare numeri molto grandi o molto piccoli senza modificare la scala. Scarsa flessibilità : o La precisione e l'intervallo sono vincolati dalla posizione fissa della virgola.
La rappresentazione a virgola mobile sposta dinamicamente la posizione della virgola decimale in base a un esponente. Questo approccio segue la notazione scientifica.
Formato : o Un numero a virgola mobile è composto da: Segno ( ss): Indica se il numero è positivo ( 00 ) o negativo ( 11 ). Mantissa ( mm): Contiene i bit significativi del numero. Esponente ( ee): Indica di quanto spostare la virgola. Esempio : o Il numero 5.255.25 in virgola mobile può essere rappresentato come: 1.0101⋅221.0101 \cdot 2^2 Qui, la mantissa è 1.01011.0101 e l’esponente è 22. Standard IEEE 754 : o Numeri in virgola mobile sono standardizzati in diversi formati (es. 32-bit, 64-bit). Single precision (32 bit) : 1 bit per il segno, 8 bit per l’esponente, 23 bit per la mantissa. Double precision (64 bit) : 1 bit per il segno, 11 bit per l’esponente, 52 bit per la mantissa. Vantaggi
Ampio intervallo : o Può rappresentare numeri molto grandi o molto piccoli grazie all’esponente. Alta precisione : o Flessibile nel bilanciare precisione e intervallo. Svantaggi
Calcoli complessi : o Richiede hardware o software più complessi per eseguire operazioni aritmetiche. Arrotondamento : o Può introdurre errori di arrotondamento, specialmente per numeri molto piccoli o molto grandi.
Caratteristica Virgola Fissa Virgola Mobile Precisione Fissa e predefinita Dinamica, basata sulla rappresentazione Intervallo Limitato Ampio, grazie all'esponente Efficienza Computazione semplice e veloce
Computazione più complessa e costosa Utilizzo Sistemi semplici (microcontrollori)
Sistemi avanzati (calcolo scientifico, grafica) Errori di arrotondamen to
Rari Possibili in numeri estremamente grandi o piccoli
Virgola Fissa : o Adatta per applicazioni che richiedono calcoli semplici e deterministici, come: Controllo industriale. Elaborazione audio o video su dispositivi a bassa potenza. Virgola Mobile : o Adatta per applicazioni che necessitano di grande intervallo dinamico o precisione, come: Calcolo scientifico. Grafica 3D. Machine learning.