Transcript null

INFORMATICA Novembre 2016 Docente Salvatore Mosaico parte 1
Codifica dei numeri REALI (RAZIONALI E IRRAZIONALI) con segno in base 2:
• Rappresentazione in virgola fissa
• Rappresentazione in virgola mobile (Floating Point)
Rappresentazione in virgola fissa
La rappresentazione in virgola fissa e cosi detta in quanto,
stabilito il numero n di bit per memorizzare il numero
reale (solitamente 8 16 32 64) si usa un bit per
rappresentare il segno del numero ed i rimanenti n -1 bit
vengono suddivisi in due parti una per la memorizzazione
della parte intera e una per la parte frazionaria, separate
esempio 16 bit
15
Segno +0= + 1= -
14
13
12
11
10
9
8
7
Parte intera
6
5
4
3
2
Parte Frazionaria
,
1 bit per il segno
7 bit parte intera
8 bit parte frazionaria
La virgoila tra 7 e 8 bit (immaginaria)
1
1
0
INFORMATICA Novembre 2016 Docente Salvatore Mosaico parte 1
Ricordiamo che 29,37 nella forma polinomiale
2*101+9*100+3*10-1+7*10-2 =20+9+1/10+1/100
Ossia la parte decimale sono potenze negative di 10
Per convertire da base 10 a base in base 2 un numero frazionario
Si mette 0 1 nel bit più significativo 0 positivo 1 negativo
Si converte normalmente la parte intera in base 2
Si converte la parte frazionaria nel seguente modo:
SI PROCEDE NEL SEGUENTE MODO:
• si moltiplica il numero da convertire * 2 e si ottiene una parte intera e una
decimale
• si ripete a partire dalla parte decimale ottenuta e si ottiene una nuova parte
intera e una decimale
• fino ad ottenere una parte decimale 0 o raggiunto numero massimo bit a
(numero periodico)
• il numero convertito e formato da tutte le parti intere (la prima è la più
significativa)
• Con n bit fissato f come numero di bit dopo dei quali si
fissa la virgola si ha
che l'intervallo di dei valori rappresentabile va da
-(2n- 1)・2 -f
a +(2n- 1 -1)・2–f
2
INFORMATICA Novembre 2016 Docente Salvatore Mosaico parte 1
ESEMPIO 1
Convertire in binario virgola fissa il numero 43,6875 (16 BIT)
IL NUMERO È POSITIVO BIT 15 = 0
Covertiamo la parte intera
DIVIDENDO
43
21
10
5
2
1
(43)1o=(101011)2
DIVISORE
2
2
2
2
2
2
QUOZIENTE
21
10
5
2
1
0
RESTO
1
1
0
1
0
1 (bit + significativo)
Covertiamo la parte frazionaria
(0,6875)1o
fattore1
0,6875
0,375
0,75
0,5
fattore2
2
2
2
2
prodotto parte frazionaria
1,375
0,375
0,75
0,75
1,5
0,5
1
0
parte intera
1 (bit + significativo)
0
1
1
(0,6875)1o=(1011)2
Otteniamo dunque (43,6875)10 = (101011,1011)2
15
Segno +0= + 1= 0
14
13
12
11
10
9
8
7
6
Parte intera
0
1
0
1
0
5
4
3
2
1
0
0
0
Parte Frazionaria
1
1
1
,
3
0
1
1
1
0
INFORMATICA Novembre 2016 Docente Salvatore Mosaico parte 1
ESEMPIO 2 (numero periodico)
Convertire in binario il numero periodico 4,3737373737… (16 BIT)
IL NUMERO È POSITIVO BIT 15 = 0
Covertiamo la parte intera
DIVIDENDO
4
2
1
(4)1o=(100)2
DIVISORE
2
2
2
QUOZIENTE
2
1
0
RESTO
0
0
1 (bit + significativo)
Covertiamo la parte frazionaria
(0,37373737..)1o
fattore1
0,373737374
0,74747475
0,49494949
0,98989899
0,97979798
0,95959596
0,91919192
0,83838384
fattore2
prodotto
2
2
2
2
2
2
2
2
0,747474747
1,494949495
0,989898990
1,979797980
1,959595960
1,919191919
1,838383838
1,676767677
parte
parte intera
frazionaria
0,747474747
BIT + SIGNIFICATIVO 0
0,494949495
1
0,989898990
0
0,979797980
1
0,959595960
1
0,919191919
1
0,838383838
1
0,676767677
1
(0,37373737..)1o =(0,01011111)2
Otteniamo dunque (44,37373737..)10 = (100,01011111)2
notiamo che spesso abbiamo sempre approssimazioni
( le cifre decimali inferiori a quelle reali)
4
INFORMATICA Novembre 2016 Docente Salvatore Mosaico parte 1
SUCCEDE ANCHE che un numero non periodico in base 10
diventa periodico in base 2
ESEMPIO 3 (non periodico)
Convertire in binario il numero periodico 4,3 (16 BIT)
IL NUMERO È POSITIVO BIT 15 = 0
Convertiamo la parte intera
DIVIDENDO
4
2
1
(4)1o=(100)2
DIVISORE
2
2
2
QUOZIENTE
2
1
0
RESTO
0
0
1 (bit + significativo)
Covertiamo la parte frazionaria
(0,3)1o
fattore1
fattore2
prodotto
parte frazionaria
parte
intera
0,3
2 0,600000000
0,600000000
0
0,6
2 1,200000000
0,200000000
1
0,2
2 0,400000000
0,400000000
0
0,4
2 0,800000000
0,800000000
0
0,8
RIPETIZIONE
0,6
2 1,600000000
0,600000000
1
2 1,200000000
0,200000000
1
0,2
2 0,400000000
0,400000000
0
0,4
2 0,800000000
0,800000000
0
(0,3) 1o =(0,01001010010100101001010010100101001)2 =( 0,01001)2
IN QUESTO CASO Èer la parte decimale MEMORIZZIAMO SOLO I PRIMI 8 BIT
5
INFORMATICA Novembre 2016 Docente Salvatore Mosaico parte 1
Conversione di numeri razionali da base 2 a base 10:
Si utilizza come per gli interi la forma polinomiale
utilizzando le potenze negative per le cifre dopo la virgola
(101,01)2 = 1*22 + 0*21 + 1*20 + 0*2-1 + 1*2-2 =
= 4 + 0 + 1 + 0 + 0,25 = 5,25
perché 2-1 = 1/2 = 0,5
2-2 = 1/22 = ¼= 0.25
e in generale 2-n = 1/2n
6