Formato del tipo di dati REAL (numeri in virgola mobile) Pagina 1 di 3 Formato del tipo di dati REAL (numeri in virgola mobile) I numeri in virgola mobile vengono rappresentati nella forma generica "numero = m ∗ b elevato a E" . La base ”b” e l'esponente ”E” sono numeri interi, mentre la mantissa ”m” è un numero razionale. Questa rappresentazione numerica presenta il vantaggio di poter rappresentare in uno spazio limitato valori molto grandi e valori molto piccoli. Il numero limitato di bit per la mantissa e per l'esponente consente di coprire un ampio campo numerico. Lo svantaggio è rappresentato dalla limitata precisione di calcolo: per esempio nel fare la somma di due numeri gli esponenti devono essere allineati spostando (virgola decimale mobile) la mantissa (addizione delle mantisse di due numeri con lo stesso esponente). Formato in virgola mobile in STEP 7 I numeri in virgola mobile in STEP 7 corrispondono al formato di base di larghezza semplice, come descritto nella norma ANSI/IEEE Standard 754–1985, IEEE Standard for Binary Floating-Point Arithmetic. Essi sono costituiti dai componenti seguenti : l il segno V l l'esponente aumentato di una costante e = E + bias (bias = +127) l la parte frazionaria della mantissa m. La parte numerica intera della mantissa non viene memorizzata poiché è sempre = 1 all'interno del campo numerico valido I tre componenti occupano insieme una doppia parola (32 bit): La tabella seguente mostra la valenza dei singoli bit nel formato in virgola mobile . Componente del numero in virgola mobile Segno V Numero bit 31 Valenza Esponente e ... Esponente e Esponente e Mantissa m ... Mantissa m Mantissa m 30 ... 24 23 22 ... 1 0 2 elevato a 7 ... 2 elevato a 1 2 elevato a 0 2 elevato –1 ... 2 elevato a –22 2 elevato a –23 Con i tre componenti V, e e m il valore di un numero rappresentato in questo formato è definito dalla formula: Numero = 1.m ∗ 2 elevato a (e-bias) Dove: l e: 1 e 254 l Bias: bias = 127. Viene così a mancare un segno extra per l'esponente . l V: V = 0 per un numero positivo e V = 1 per un numero negativo. mk:@MSITStore:C:\programmi\siemens\step7\S7bin\s7bashdE.chm::/BAS00599.htm 05/07/2003 Formato del tipo di dati REAL (numeri in virgola mobile) Pagina 2 di 3 Campo numerico dei numeri in virgola mobile In base al formato in virgola mobile rappresentato in alto si ottengono l l Il numero minimo in virgola mobile = 1.0 ∗ 2 elevato a (1-127) = 1.0 ∗ 2 elevato a (-126) = 1.175 495E–38 e Il numero massimo in virgola mobile = 2-2 elevato a (-23) ∗ 2 elevato a (254-127) = 2-2 elevato a (-23) ∗ 2 elevato a (+127) = 3.402 823E+38 Il numero zero viene rappresentato con e = m = 0 ; e = 255 e m = 0 sta per ”infinito”. Formato Numeri in virgola mobile secondo la norma ANSI/IEEE Campo1) –da 3.402 823E+38 a –1.175 495E–38 e"0e da +1.175 495E–38 a +3.402 823E+38 La tabella seguente mostra lo stato di segnale dei bit nella parola di stato per i risultati delle operazioni con numeri in virgola mobile che non sono compresi nel campo valido . Campo non valido per un risultato A1 A0 OV OS -1.175494E-38 < risultato < -1.401298E-45 (numero negativo) valore inferiore +1.401298E-45 < risultato < +1.175494E-38 (numero positivo) valore inferiore Risultato < -3.402823E+38 (numero negativo) overflow Risultato > 3.402823E+38 (numero positivo) overflow Nessun numero in virgola mobile valido oppure operazione non ammessa (valore di ingresso fuori del campo numerico valido) 0 0 1 1 0 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 Attenzione nelle operazioni matematiche : Il risultato "Nessun numero in virgola mobile valido" si ottiene per esempio tentando di estrarre la radice quadrata di –2 . Nelle operazioni matematiche pertanto valutare sempre i bit di stato prima di continuare a calcolare con il risultato. Attenzione nel "Comando delle variabili": Se vengono memorizzati i valori per le operazioni in virgola mobile, p.es. nelle doppie parole di merker , questi valori possono essere modificati con configurazioni di bit a piacere. Tuttavia non ogni configurazione di bit è un numero valido ! Precisione di calcolo con numeri in virgola mobile , Attenzione In caso di calcoli complessi con numeri di grandezze molto differenti (diverse potenze alla decima) si possono verificare inesattezze nel risultato del calcolo. I numeri in virgola mobile in STEP 7 sono esatti fino al 6° decimale. Nell'introdurre costanti a virgola mobile è pertanto possibile digitare solo max. 6 posizioni decimali. Avvertenza La precisione di calcolo di 6 decimali significa p.es. che l'addizione di numero1 + numero2 = dà come somma numero1, quando numero1 è maggiore di numero2 ∗ 10 elevato a y, con y 6: 100 000 000 + 1 = 100 000 000. Esempi di numeri in formato a virgola mobile La figura seguente riporta il formato di numeri in virgola mobile per i seguenti valori decimali: l 10,0 mk:@MSITStore:C:\programmi\siemens\step7\S7bin\s7bashdE.chm::/BAS00599.htm 05/07/2003 Formato del tipo di dati REAL (numeri in virgola mobile) l p (3,141593) l radice quadrata di 2 (2 = 1,414214) Pagina 3 di 3 Il numero 10.0 nel primo esempio è il risultato del formato in virgola mobile seguente (rappresentazione esadecimale: 4120 0000) : e = 2 elevato a 1 + 2 elevato a 7 = 2 + 128 = 130 m = 2 elevato a (-2) = 0,25 Così risulta: 1.m ∗ 2 elevato a (e – bias) = 1.25 ∗ 2 elevato a (130 – 127) = 1.25 ∗ 2 elevato a 3 = 10.0. mk:@MSITStore:C:\programmi\siemens\step7\S7bin\s7bashdE.chm::/BAS00599.htm 05/07/2003