vuoi
o PayPal
tutte le volte che vuoi
Conversione float
RISULTATO: frazionaria ma le va aggiunto 3. Anche la parte decimale si ottiene con le potenze di due che però sono, partendo Quindi la parte frazionaria è: immediatamente a destra della virgola 1/2, 1/4, 1/8
RISULTATO = 125.125
1. Supponiamo di leggere il Vogliamo rappresentarlo in floating point a 16 bit, half precision valore -0.09357
2. La parte intera si ottiene con le divisioni La parte intera sarà 0 per 2 -> 0/2 = 0 con resto 0
3. Trasformo il numero in binario
4. La parte frazionaria si ottiene moltiplicando per 2 fino a che non ottengo 1 La parte frazionaria sarà 0.0001
5. La parte frazionaria non va Quindi la parte frazionaria è 1, infatti sarebbe bene perché 0 < f < 1, mentre qui 1
6. va portato in binario e viene: 0.1 + 1, mentre l'esponente è -4 (a cui va però sommato 15): la virgola per
ottenere qualcosa posizioni -4 + 15 = 11(con virgola mobile) del genere 1'xxxxxxx mi indica il segnox'01011'xxxxx è l'esponente che avevamotrovato prima (a cui ho aggiunto uno 0 asinistra in quanto 11 in binario è 1011, però l'4. Devo portarlo in binario e 1'01011'1000000000, che è così suddiviso esponente deve occupare 5 bit e quindi èottengo: diventato 01011)x'xxxxx'1000000000 è la parte frazionaria.
Un numero floating point (virgola mobile) Come visto sopra, la parte frazionaria è 1è della forma scritta sopra, dove "f" però mi mancano 9 bit per avere i 10 bit cherappresenta la parte frazionaria, "e" l' deve occupare la parte frazionaria e quindiesponente. 1 non è un bit della parte completo con degli zeri a destrafrazionaria ma le va aggiunto 1010 -> ASe volessi ottenere l'esadecimale 1110 -> Edevo riscrivere il mio numero
AE001010'1110'0000'0000 0000 -> 0come: 0000 -> 0
Ogni byte ha dei bit che sono "occupati" dall'intestazione UTF-8, in particolare il primo 0 fa parte dell'intestazione.
In questo caso abbiamo 7 bit liberi perché il primo byte avrà una sequenza di 1 pari alla lunghezza della sequenza di byte (es. 11 se la sequenza è di due byte) seguiti da uno 0, mentre tutti i byte successivi avranno come intestazione solo 10. Inoltre bisogna ricordare che un byte ospita 8 bit.
Sequenza composta da un solo byte 0xxxxxxx
Sequenza composta da due byte 110xxxxx 10xxxxxx
Abbiamo come simbolo "{" e sappiamo che ha CODE POINT "7B", dobbiamo rappresentarlo in binario:
ESEMPIO 1
1. Ricaviamo il binario di 7B semplicemente la rappresentazione ASCII (rappresentarlo in
UTF-8 Code Point), quindi anche in UTF-8 resta 7B
Codifica
Dato il CODE POINT ricavare la codifica UTF-8 11'1011'1011
Se voglio trasformare questo in esadecimale
Codifica
Abbiamo il code-point 3BB e lo vogliamo 0011'1011'1011. Gli zeri a sinistra non sono I bit che mi interessano sono 10, quindi un
Questi saranno i miei due byte, in cui i numeri
ESEMPIO 2
1. Ricaviamo il binario di 3BB devo dividere i bit in gruppi di quattro e
Decodifica
Data la codifica UTF-8 ricavare il CODE POINT codificare in UTF-8 importanti e quindi li possiamo togliere byte non mi basta per metterceli tutti e ho neri sono l'INTESTAZIONE UTF-8, lo 0 rosso ottengo CEBB
bisogno di due byte serve per completare i bit, i numeri blu sonoquelli che avevo ricavato dal code point
Conversione
ESEMPIO 3
Ho 1F385 e devo rappresentarlo in UTF-8 0001'1111'0011'1000'0101
Ho 17 bit quindi ho bisogno di 4 byte 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 11110000 10011111 10001110 10000101 FO 9F
8E 85UNICODE 0011 -> 3
Immaginiamo di avere come esadecimale CEBB sappiamo che è formato da 2 byte in Se abbiamo due byte, per quello detto prima, Convertendo CEBB in binario ottengo 110' 3BB -> Code pointcodificato in UTF-8 CEBB e voglio trovare il quanto ogni lettera esadecimale è formata sappiamo che il primo sarà del tipo 110xxxxxESEMPIO 1 Tolgo l'intestazione e mi rimane: 0011'1011'1011 1011 -> B01110 10'111011CODE-POINT da 4 bit e il secondo 10xxxxxx 1011 -> BDecodifica 1110'0010 -> primo byte Tolgo le intestazioni e mi rimane: 0100'0100'0011'1010.Ho ricevuto in UTF-8 una sequenza di byte e 1110'0010'1000'1000'1001'1010. Devo rappresentarlo in esadecimale e quindi10'001000 -> secondo byte 00100010000111010. Tolto anche gli zeri a NB: ho aggiunto uno zero a sinistra perchéESEMPIO 2 Ottengo 221A come esadecimalevoglio sapere qual è il code point: E2889A
Vedo che ho 3 byte lo divido in gruppi di 4:
10'0110 -> terzo byte sinistra, quindi mi rimane 1000
1000 1110 altrimenti avrei avuto solo 3 bit
Questa volta ho separato con l'apice l'intestazione dal resto dei bit. Infatti vedo che il primo byte ha 1110 come intestazione, infatti i byte sono 3 (come il numero di 1 nell'intestazione)