35
Codifica binaria: - numeri razionali - Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin

Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Codifica binaria:- numeri razionali -

Ingegneria Meccanica e dei Materiali

Università degli Studi di Brescia

Prof. Massimiliano Giacomin

Page 2: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Tipologie di codici

Informatica e Programmazione – Università di Brescia 2Docente: M. Giacomin

• Per la rappresentazione di:

– caratteri alfabetici e testi

– valori logici

– numeri naturali

– numeri interi relativi [val assoluto e segno, complemento a due]

– numeri “reali” [virgola fissa e virgola mobile]

– suoni, immagini e sequenze video

• Codici per la rilevazione e correzione di errori

• Codici di compressione (senza | con perdita)

Page 3: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Codifica di numeri “reali”: il problema

Elementi di Informatica e Programmazione – Università di Brescia 3Docente: M. Giacomin

-5-4-3-2-1012

...n bit: 2n combinazioni

00000000

00000001

00000010...

11111110

11111111

QUALI?

3

1.01.11.21.31.41.51.61.71.81.92.0

...

Page 4: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

In entrambi i casi rappresentazione definita mediante un formato

• il numero di bit n a disposizione• i campi in cui sono suddivisi i bit:

- quanti- in che ordine- quanto è lungo ciascun campo- cosa rappresenta ciascun campo

Elementi di Informatica e Programmazione – Università di Brescia 4Docente: M. Giacomin

2 modalità

Rappresentazione in virgola fissa(non usata nei calcolatori)

Rappresentazione in virgola mobile

Modalità di rappresentazione

Page 5: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Rappresentazione in virgola fissa• Abbiamo n bit a disposizione (e vogliamo rappresentare numeri reali):

- un campo del formato rappresenta la parte intera- un campo del formato rappresenta la parte frazionaria

Esempio n = 32 bit

Parte intera

16 bit

Parte frazionaria

16 bit

0151631

• Ad esempio 13.25 sarebbe rappresentato così:

00000000000011010100000000000000

Elementi di Informatica e Programmazione – Università di Brescia 5Docente: M. Giacomin

Page 6: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Intervallo di rappresentazione

Nell’esempio precedente, qual è il valore massimo rappresentabile?

1111111111111111.1111111111111111

16 bit 16 bit

- Parte intera: 216 – 1 = 65535- Parte frazionaria:

0.1111111111111111 +0.0000000000000001 =1.0000000000000000

2-16

Þ 1 - 2-16 = 0.9999847421 circa 1

NMAX = 65535.9999847421 circa 65536

Elementi di Informatica e Programmazione – Università di Brescia 6Docente: M. Giacomin

Page 7: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Intervallo di rappresentazione in generale

• max numero rappresentabile NMAX:

111……………………111 111……………………111

nI bit nF bit

Max parte intera: 2nI-1Max parte frazionaria: 1 - 2-nF

se nF grande pari a circa 1

NMAX = (2nI-1) + (1 - 2-nF)se nF grande pari a circa 2nI

Elementi di Informatica e Programmazione – Università di Brescia 7Docente: M. Giacomin

Page 8: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Granularità

• Qual è la “precisione” di questa rappresentazione?• Granularità: differenza tra un numero e il successivo rappresentabile:

quanto più è piccola, tanto più precisa è la rappresentazione!

Nell’esempio precedente

Dato un numero, rappresentato, qual è il successivo?

00000000000011010100000000000000 +0.0000000000000001

00000000000011010100000000000001

In generale

La granularità è fissa e pari a 2-nF :per un qualsiasi numero rappresentabile I, il successivo è I + 2-nF

Elementi di Informatica e Programmazione – Università di Brescia 8Docente: M. Giacomin

Page 9: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Inconveniente della rappresentazione in virgola fissa

• Con la rappresentazione precedente, vogliamo rappresentare un numero “grande”, ad esempio 60˙000

1110101001100000 0000000000000000

a cosa mi servono questi?

Þ Molto meglio un campo più grande per la parte intera!

0000000000000010

a cosa mi servono questi?

Þ Molto meglio un campo più grande per la parte frazionaria!

• Vogliamo rappresentare un numero “piccolo”, ad esempio 2-15

0000000000000000

Elementi di Informatica e Programmazione – Università di Brescia 9Docente: M. Giacomin

Page 10: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Per numeri grandi, inutile grande precisione (piccola granularità)

Si vuole un sistema di rappresentazione in cui la granularità dipende dal numero rappresentato:

si estende così l’intervallo dei numeri rappresentabili

Elementi di Informatica e Programmazione – Università di Brescia 10Docente: M. Giacomin

parte intera parte frazionaria

Numeri grandiNumeri piccoli

Page 11: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Rappresentazione in virgola mobile(floating point)

Elementi di Informatica e Programmazione – Università di Brescia 11Docente: M. Giacomin

IDEA DI BASE

Nelle calcolatrici scientifiche si usa la notazione esponenziale

1.345 EXP 08 rappresenta 1.345*108

IDEA: rappresentare un numero come

N = mant * 2esp

(l’esponente 2 è più comodo con numeri binari)

Page 12: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

QUINDI

Dato un numero da rappresentare N:

N = ±mant*2esp

FORMATO

Si memorizzano segno, mantissa ed esponente

sM |mant| esp

nM bit nE bit Esempio di formato:

Elementi di Informatica e Programmazione – Università di Brescia 12Docente: M. Giacomin

Esempi

10110101112*229

0.110110112*2-36

Page 13: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

QUINDI

Dato un numero da rappresentare N:

N = ±mant*2esp

FORMATO

Si memorizzano segno, mantissa ed esponente

sM |mant| esp

nM bit nE bit Esempio di formato:

ProblemaIn questo modo la rappresentazione non è univoca:

0.12 = 12 * 2-1

= 102 * 2-2

= 0.12 * 20

Þ si stabilisce la “forma normalizzata” della mantissaElementi di Informatica e Programmazione – Università di Brescia 13Docente: M. Giacomin

Page 14: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

1 8 23S E M

Segno S: 0 segno + 1 segno -

N = 1.xxxxxxxxx * 2esp

Normalizzazione e mantissa

23 bit (M)hidden bit

Rappresentazione dell’esponente

E = esp + 127

Esempio: N= -3.5

Segno: 1

N = 11.1= 1.11 * 21

M = 1100…0

E = 1 +127 = 128= 10000000

11000000011000000000000000000000

Elementi di Informatica e Programmazione – Università di Brescia 14Docente: M. Giacomin

Standard IEEE 754 in singola precisione (32 bit)

*Institute of Electrical and Electronic Engineering

Page 15: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Nota sulla rappresentazione dell’esponente

0

-127

+128 127

0

255

+127Numeri negativi

Numeri positivi

Elementi di Informatica e Programmazione – Università di Brescia 15Docente: M. Giacomin

Page 16: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Esercizio (Appello del 7 gen 2003) Ricavare il valore decimale del seguente numero in virgola mobile rappresentato secondo lo standard IEEE 754 a 32 bit: [3]

0 10000000 10000000000000000000000

Elementi di Informatica e Programmazione – Università di Brescia 16Docente: M. Giacomin

Page 17: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Esercizio (Appello del 7 gen 2003) Ricavare il valore decimale del seguente numero in virgola mobile rappresentato secondo lo standard IEEE 754 a 32 bit: [3]

0 10000000 10000000000000000000000 Soluzione Segno: + Esponente: E = 27 = 128 esp = 128-127 = 1 Mantissa: mant = 1.1 Þ N = 1.12 * 21 = 112 = 310

Elementi di Informatica e Programmazione – Università di Brescia 17Docente: M. Giacomin

Page 18: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Esercizio Rappresentare il numero decimale –4.5 secondo lo standard in virgola mobile IEEE 754 a 32 bit.

Elementi di Informatica e Programmazione – Università di Brescia 18Docente: M. Giacomin

Page 19: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Esercizio Rappresentare il numero decimale –4.5 secondo lo standard in virgola mobile IEEE 754 a 32 bit. Soluzione Segno: 1 Rapp. binaria: 4.510 = 100.12 Forma normalizzata: N = 1.001 * 22 Esponente: esp = 2 Þ E = 2+127 = 12910 = 10000001

Þ IEEE754: 1 10000001 0010……0

Elementi di Informatica e Programmazione – Università di Brescia 19Docente: M. Giacomin

Page 20: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Esercizio Rappresentare il numero decimale 0.25 secondo lo standard in virgola mobile IEEE 754 a 32 bit.

Elementi di Informatica e Programmazione – Università di Brescia 20Docente: M. Giacomin

Page 21: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Esercizio Rappresentare il numero decimale 0.25 secondo lo standard in virgola mobile IEEE 754 a 32 bit. Soluzione Segno: 0 Rapp. binaria: 0.2510 = 0.012 Forma normalizzata: N = 1.0 * 2-2 Esponente: esp = -2 ⇒ E = -2+127 = 12510 = 01111101

⇒ IEEE754: 0 01111101 0000……0

Elementi di Informatica e Programmazione – Università di Brescia 21Docente: M. Giacomin

Page 22: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

PASSAGGIO IMPORTANTE: normalizzazione ES. 1

Rappresentazione binaria: 1001.01001 = 1.00101001 * 23 (forma normalizzata)

ES. 2 Rappresentazione binaria:

0.001011 = 1.011 * 2-3 (forma normalizzata)

Elementi di Informatica e Programmazione – Università di Brescia 22Docente: M. Giacomin

Page 23: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

PER ESERCITARSI…

http://www.h-schmidt.net/FloatApplet/IEEE754.html Convertitore (on line) tra: • IEEE754 • Binario • Decimale • Esadecimale

E’ sufficiente inserire un valore in una delle precedenti rappresentazioni per ottenere i valori delle altre tre. (vedi anche il sito del corso…)

Elementi di Informatica e Programmazione – Università di Brescia 23Docente: M. Giacomin

Page 24: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Elementi di Informatica e Programmazione – Università di Brescia 24Docente: M. Giacomin

Limiti di rappresentazione per la IEEE-754 a 32 bit

Nota “tecnica” sull’esponente• Estremo superiore 1…1 (255) indica +∞, -∞ o situazioni

particolari a seconda di mantissa e segno • Estremo inferiore 0…0 (0) indica un numero “denormalizzato”

MinExp = -126 MaxExp = +127

Numero più grande: ± 1.11…12 * 2127 » 2*2127 = 2128

Numero più piccolo: ± 1.00…02 * 2-126 = 2-126

Limiti dei numeri “normalizzati”

OVERFLOW - NORMALIZZATI - NORMALIZZATI + OVERFLOW +

-∞ -2128 -2-126 0 2-126 2128 +∞

Page 25: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

OVERFLOW - NORMALIZZATI - DENORM.- UNDERF. DENORM.+ NORMALIZZATI + OVERFLOW +

-∞ -2128 -2-126 -2-149 0 2-149 2-126 2128 +∞

L’intervallo dei valori rappresentabili è molto più limitato. Es:- anche se dedicassimo tutti i 32 bit alla parte intera, max 232-1 - anche se dedicassimo tutti i 32 bit alla parte fraz, min 2-32

Elementi di Informatica e Programmazione – Università di Brescia 25Docente: M. Giacomin

Numeri denormalizzati

E=0 ⇒ N=0.M*2-126

Confronto con virgola fissa

Page 26: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Precisione (granularità)

• I due intervalli di numeri positivi e negativi esprimibili non formano insiemi continui e i numeri non sono uniformemente distribuiti (sono più radi per valori elevati dell’esponente e più fitti per valori piccoli dell’esponente - si infittiscono nei pressi dello zero)

Elementi di Informatica e Programmazione – Università di Brescia 26Docente: M. Giacomin

La precisione è “concentrata” dove ce n’è bisogno!

Page 27: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Esempiola separazione fra 1.0..00 x 299 e 1.0..01 x 299 (ovvero, 2-23+99 = 276) è molto maggiore di quella fra 1.0..00 x 20 e 1.0..01 x 20 (ovvero, 2-23)

-¥ -2128 -2-126 0 2-126 2128 +¥

OVERFLOW - NORMALIZZATI - NORMALIZZATI + OVERFLOW +

1.0..00

1.0..00 x 299

La precisione è “concentrata” dove ce n’è bisogno!

Elementi di Informatica e Programmazione – Università di Brescia 27Docente: M. Giacomin

Page 28: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Þ Approssimazioni inevitabiliÞ Aritmetica “reale” del calcolatore

diversa da quella classica

MA NON E’ TUTTO ORO QUELLO CHE LUCCICA…

• L’insieme dei numeri in virgola mobile non coincide con R(l’insieme dei numeri reali):

− l’insieme dei numeri reali è denso e illimitato− l’insieme dei numeri in virgola mobile non è denso

ed è limitato tra un numero reale massimo ed uno minimoesprimibili

Elementi di Informatica e Programmazione – Università di Brescia 28Docente: M. Giacomin

Page 29: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

UNA STORIA DI GUERRA (A)

• Durante la Guerra del Golfo nel 1991, un missile Patriot non riuscì ad intercettare un missile Scud iracheno: morirono 28 americani

Elementi di Informatica e Programmazione – Università di Brescia 29Docente: M. Giacomin

Page 30: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

UNA STORIA DI GUERRA (B)

• In uno studio successivo, si scoprì il motivo:- il Patriot incrementava un contatore ogni 0.1 sec- il tempo complessivo veniva ottenuto moltiplicando per 0.1- problema: 0.1 non è rappresentabile esattamente in virgola mobile

Elementi di Informatica e Programmazione – Università di Brescia 30Docente: M. Giacomin

0.110 = 0.00011

- l’errore con la precisione adottata: 0.000000095367431640625

…che dopo 100 ore portava ad una sottostima del tempo di 0.34 s

- e in 0.34 sec lo Scud percorre circa 500 m…!

Page 31: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

• Le operazioni possono dare luogo a errori

• Esempio: divisione per numeri molto piccoli

à il risultato può cadere nell’intervallo di overflow (+ o -)

• Esempio: divisione per numeri molto grandi

à può dar luogo al fenomeno della cancellazione (risultato = 0)

Elementi di Informatica e Programmazione – Università di Brescia 31Docente: M. Giacomin

Operazioni sui numeri “reali”: problemi

Page 32: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

IEEE 754 in doppia/quadrupla precisione

64 bit

11 521

Elementi di Informatica e Programmazione – Università di Brescia 32Docente: M. Giacomin

S E M

• Doppia precisione

N = (-1)S *1.M*2E-1023

• Quadrupla precisione

128 bit

15 1121

S E M

N = (-1)S *1.M*2E-16383

Page 33: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

NUMERI IN VIRGOLA MOBILE

NEI LINGUAGGIDI PROGRAMMAZIONE

Page 34: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Linguaggio macchina (cenno)

• Istruzioni specifiche per i calcoli in virgola mobile• Spesso nei processori a 32 bit sono presenti istruzioni per il calcolo

in doppia precisione (64 bit): si utilizzano due registri per operando!

Elementi di Informatica e Programmazione – Università di Brescia 34Docente: M. Giacomin

Esempio

add.s $f1, $f3, $f4 # $f1=$f3+$f4 (singola precisione-32 bit)

add.f $f0, $f2, $f4 # [$f0-$f1]=[$f2-$f3]+[$f4-$f5] # (doppia precisione-64bit)

Page 35: Ingegneria Meccanica e dei Materialifimec.altervista.org/Informatica_&_Programmazione... · –numeri naturali –numeri interi relativi [val assoluto e segno, complemento a due]

Linguaggio CSono disponibili i tipi float, double, long double

(cfr LINGUAGGIO C – Tipi predefiniti)

Elementi di Informatica e Programmazione – Università di Brescia 35Docente: M. Giacomin