{"id":143,"date":"2010-10-24T23:35:29","date_gmt":"2010-10-24T21:35:29","guid":{"rendered":"http:\/\/www.gpeano.org\/oddenino\/"},"modified":"2021-06-29T16:14:15","modified_gmt":"2021-06-29T14:14:15","slug":"numeri-in-virgola-mobile","status":"publish","type":"page","link":"https:\/\/liceocuneo.it\/oddenino\/informatica\/teorica\/numeri-in-virgola-mobile\/","title":{"rendered":"Numeri in virgola mobile"},"content":{"rendered":"<h2>Rappresentazione binaria di numeri in virgola mobile<\/h2>\n<p style=\"text-align: justify\">Una forma diffusa per rappresentare dei valori molto grandi, consiste  nell&#8217;indicare un numero con dei decimali moltiplicato per un valore  costante elevato a un esponente intero. Per esempio, per rappresentare  il numero 123&nbsp;000&nbsp;000 si potrebbe scrivere 123\u00b710<sup>6<\/sup>, oppure anche 0,123\u00b710<sup>9<\/sup>. Lo stesso ragionamento vale anche per valori molti piccoli; per esempio 0,000&nbsp;000&nbsp;123 che si potrebbe esprimere come 0,123\u00b710<sup>-6<\/sup>.<\/p>\n<p style=\"text-align: justify\">Per usare una notazione uniforme, si pu\u00f2 convenire di indicare il  numero che appare prima della moltiplicazione per la costante elevata a  una certa potenza come un valore che pi\u00f9 si avvicina all&#8217;unit\u00e0, essendo  minore o al massimo uguale a uno. Pertanto, per gli esempi gi\u00e0 mostrati,  si tratterebbe sempre di 0,123\u00b710<sup><var>n<\/var><\/sup>.<\/p>\n<p style=\"text-align: justify\">Per rappresentare valori a <strong><em>virgola mobile<\/em><\/strong> in modo binario, si usa un sistema simile, dove i bit a disposizione  della variabile vengono suddivisi in tre parti: segno, esponente (di una  base prestabilita) e mantissa, come nell&#8217;esempio che appare nella  figura successiva.<\/p>\n<p style=\"text-align: justify\">\n<\/p><figure id=\"attachment_148\" aria-describedby=\"caption-attachment-148\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/liceocuneo.it\/oddenino\/wp-content\/uploads\/sites\/2\/1443.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-148\" src=\"https:\/\/liceocuneo.it\/oddenino\/wp-content\/uploads\/sites\/2\/1443-300x66.jpg\" alt=\"\" width=\"300\" height=\"66\" srcset=\"https:\/\/liceocuneo.it\/oddenino\/wp-content\/uploads\/sites\/2\/1443-300x66.jpg 300w, https:\/\/liceocuneo.it\/oddenino\/wp-content\/uploads\/sites\/2\/1443.jpg 956w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-148\" class=\"wp-caption-text\">Figura 1. Ipotesi di una variabile a 16 bit per rappresentare dei numeri a virgola mobile.<\/figcaption><\/figure>\n<p style=\"text-align: justify\">Nella figura si ipotizza la gestione di una variabile a 16&nbsp;bit per la  rappresentazione di valori a virgola mobile. Come si vede dallo schema,  il bit pi\u00f9 significativo della variabile viene utilizzato per  rappresentare il segno del numero; i sette bit successivi si usano per  indicare l&#8217;esponente (con segno) e gli otto bit finali per la mantissa  (senza segno perch\u00e9 indicato nel primo bit), ovvero il valore da  moltiplicare per una certa costante elevata all&#8217;esponente.<\/p>\n<p style=\"text-align: justify\">Quello che manca da decidere \u00e8 come deve essere interpretato il  numero della mantissa e qual \u00e8 il valore della costante da elevare  all&#8217;esponente indicato. Sempre a titolo di esempio, si conviene che il  valore indicato nella mantissa esprima precisamente \u00ab0,<var>mantissa<\/var>\u00bb e che la costante da elevare all&#8217;esponente indicato sia 16 (ovvero 2<sup>4<\/sup>), che si traduce in pratica nello spostamento della virgola di quattro cifre binarie alla volta.<\/p>\n<figure id=\"attachment_149\" aria-describedby=\"caption-attachment-149\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/liceocuneo.it\/oddenino\/wp-content\/uploads\/sites\/2\/1444.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-149\" src=\"https:\/\/liceocuneo.it\/oddenino\/wp-content\/uploads\/sites\/2\/1444-300x117.jpg\" alt=\"\" width=\"300\" height=\"117\" srcset=\"https:\/\/liceocuneo.it\/oddenino\/wp-content\/uploads\/sites\/2\/1444-300x117.jpg 300w, https:\/\/liceocuneo.it\/oddenino\/wp-content\/uploads\/sites\/2\/1444.jpg 637w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-149\" class=\"wp-caption-text\">Figura 2. Esempio di rappresentazione del numero 0,051 513 671 875 (211\u00b716^-3), secondo le convenzioni stabilite. Si osservi che il valore dell'esponente \u00e8 negativo ed \u00e8 cos\u00ec rappresentato come complemento alla base (due) del valore assoluto relativo.<\/figcaption><\/figure>\n<p style=\"text-align: justify\">Naturalmente, le convenzioni possono essere cambiate: per esempio il  segno lo si pu\u00f2 incorporare nella mantissa; si pu\u00f2 rappresentare  l&#8217;esponente attraverso un numero al quale deve essere sottratta una  costante fissa; si pu\u00f2 stabilire un valore diverso della costante da  elevare all&#8217;esponente; si possono distribuire diversamente gli spazi  assegnati all&#8217;esponente e alla mantissa.<\/p>\n<h2>Rappresentazione in virgola mobile IEEE 754<\/h2>\n<p style=\"text-align: justify\">Per la rappresentazione dei valori in virgola mobile esiste uno  standard importante, <strong>IEEE 754<\/strong> (ripreso anche da altri enti di  standardizzazione), con il quale si definiscono due formati, per la  precisione singola e doppia. Secondo questo standard, un valore in  virgola mobile a precisione singola richiede 32&nbsp;bit, mentre per la  precisione doppia sono necessari 64&nbsp;bit. Per prima cosa si definisce un  \u00abnumero normalizzato\u00bb, corrispondente a:<\/p>\n<p style=\"text-align: center\">1,<var>significante<\/var><sub>2<\/sub> \u00d7&nbsp;2<sup><var>esponente<\/var><\/sup><\/p>\n<p style=\"text-align: justify\">Di questo si utilizza solo il significante (mantissa) e l&#8217;esponente  (caratteristica), omettendo il numero uno iniziale. Nella forma prevista  dallo standard <strong>IEEE 754<\/strong> si annota separatamente il segno del numero,  quindi l&#8217;esponente, che per\u00f2 \u00e8 \u00abpolarizzato\u00bb (nel senso che al valore  dell&#8217;esponente originario occorre sommare un certo valore fisso), quindi  si mettono le cifre del significante (tutte quelle che possono starci).  Si osservi che il significante viene indicato sempre come valore  assoluto, pertanto non si applica il complemento per i valori negativi;  inoltre, l&#8217;esponente viene indicato sommando al valore originale un  numero fisso che \u00e8 costituito da tutti i bit a uno, tranne quello pi\u00f9  significativo (quando l&#8217;esponente \u00e8 formato da otto bit, il numero da  sommare \u00e8 01111111<sub>2<\/sub>, pari a 127<sub>10<\/sub>; quando l&#8217;esponente \u00e8 formato da 11&nbsp;bit, il numero da sommare \u00e8 01111111111<sub>2<\/sub>, pari a 1023<sub>10<\/sub>).<\/p>\n<figure id=\"attachment_150\" aria-describedby=\"caption-attachment-150\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/liceocuneo.it\/oddenino\/wp-content\/uploads\/sites\/2\/1445.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-150\" src=\"https:\/\/liceocuneo.it\/oddenino\/wp-content\/uploads\/sites\/2\/1445-300x133.jpg\" alt=\"\" width=\"300\" height=\"133\" srcset=\"https:\/\/liceocuneo.it\/oddenino\/wp-content\/uploads\/sites\/2\/1445-300x133.jpg 300w, https:\/\/liceocuneo.it\/oddenino\/wp-content\/uploads\/sites\/2\/1445-1024x456.jpg 1024w, https:\/\/liceocuneo.it\/oddenino\/wp-content\/uploads\/sites\/2\/1445.jpg 1275w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-150\" class=\"wp-caption-text\">Figura 3. IEEE 754 a precisione singola.<\/figcaption><\/figure>\n<figure id=\"attachment_151\" aria-describedby=\"caption-attachment-151\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/liceocuneo.it\/oddenino\/wp-content\/uploads\/sites\/2\/1446.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-151\" src=\"https:\/\/liceocuneo.it\/oddenino\/wp-content\/uploads\/sites\/2\/1446-300x111.jpg\" alt=\"\" width=\"300\" height=\"111\" srcset=\"https:\/\/liceocuneo.it\/oddenino\/wp-content\/uploads\/sites\/2\/1446-300x111.jpg 300w, https:\/\/liceocuneo.it\/oddenino\/wp-content\/uploads\/sites\/2\/1446-1024x379.jpg 1024w, https:\/\/liceocuneo.it\/oddenino\/wp-content\/uploads\/sites\/2\/1446.jpg 1275w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-151\" class=\"wp-caption-text\">Figura 4. IEEE 754 a precisione doppia.<\/figcaption><\/figure>\n<p>Fonte: <a href=\"http:\/\/a2.pluto.it\/a2684.htm\" target=\"_blank\" rel=\"noopener\">http:\/\/a2.pluto.it\/a2684.htm<\/a><\/p>\n\n\n<p class=\"wp-block-paragraph\">IEEE-754 Floating Point Converter<br><a href=\"https:\/\/www.h-schmidt.net\/FloatConverter\/IEEE754.html\">https:\/\/www.h-schmidt.net\/FloatConverter\/IEEE754.html<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Rappresentazione binaria di numeri in virgola mobile Una forma diffusa per rappresentare dei valori molto grandi, consiste nell&#8217;indicare un numero con dei decimali moltiplicato per un valore costante elevato a un esponente intero. Per esempio, per rappresentare il numero 123&nbsp;000&nbsp;000 si potrebbe scrivere 123\u00b7106, oppure anche 0,123\u00b7109. Lo stesso ragionamento vale anche per valori molti &hellip; <a href=\"https:\/\/liceocuneo.it\/oddenino\/informatica\/teorica\/numeri-in-virgola-mobile\/\" class=\"more-link\">Continua a leggere <span class=\"screen-reader-text\">Numeri in virgola mobile<\/span><\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"parent":211,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-143","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/liceocuneo.it\/oddenino\/wp-json\/wp\/v2\/pages\/143","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liceocuneo.it\/oddenino\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/liceocuneo.it\/oddenino\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/liceocuneo.it\/oddenino\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/liceocuneo.it\/oddenino\/wp-json\/wp\/v2\/comments?post=143"}],"version-history":[{"count":0,"href":"https:\/\/liceocuneo.it\/oddenino\/wp-json\/wp\/v2\/pages\/143\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/liceocuneo.it\/oddenino\/wp-json\/wp\/v2\/pages\/211"}],"wp:attachment":[{"href":"https:\/\/liceocuneo.it\/oddenino\/wp-json\/wp\/v2\/media?parent=143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}