1 Numeri interi e numeri in virgola mobile F. Bombi 2 6 novembre 2003.

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

Corso di Fondamenti di Programmazione canale E-O
Introduzione al linguaggio C
I DATI I PRINCIPALI TIPI DI DATO UTILIZZATI IN PROGRAMMAZIONE
Massa Laura Mela Enrica
Fondamenti di Informatica CDL in Ingegneria Meccanica - A.A CDL in Ingegneria Meccanica - A.A Tipi di dati Ing. Simona Colucci.
Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A Tipi di dati Ing. Simona Colucci.
Anno accademico Gli operatori e le espressioni in C.
Il linguaggio C Gli operatori e le espressioni C Language
Programmazione Procedurale in Linguaggio C++
Programmazione in Java (3)
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 7 (5 novembre 2008) Programmazione in Java: lessico, variabili, tipi primitivi, assegnamento a variabile.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Variabili e tipi primitivi Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Assegnamento di valore a una variabile Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
Prof. Raffaele Montella
Programmazione Corso di laurea in Informatica
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
8) Classi numeriche e operatori Lab. Calc. I AA2002/03 - cap.82 Classi numeriche Esempi di classi numeriche: int, numeri interi che occupano una parola.
Fondamenti di Informatica A - Massimo Bertozzi TIPI DI DATO IN C++ What's in a name? That which we call a rose By any other name would smell as sweet.
Algebra di Boole L’algebra di Boole è un formalismo che opera su variabili (dette variabili booleane o variabili logiche o asserzioni) che possono assumere.
Il Linguaggio C.
Usare rappresentazioni di lunghezza fissa porta ad avere valori non rappresentabili: Overflow indica un errore nella rappresentazione del risultato in.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Java base I: Sintassi e tipi di dati
RAPPRESENTAZIONE DELL’INFORMAZIONE
LA DOCUMENTAZIONE È noto che un buon programma dovrebbe essere ben documentato.. ma lesperienza insegna che quasi mai ciò viene fatto! –non cè tempo, ci.
Programmazione in Java
Programmazione in Java Claudia Raibulet
JAVA Franco Bombi 8 ottobre FB Introduzione Java è un linguaggio di impiego generale, basato su classi e orientato agli oggetti Java.
CODIFICA Da flow-chart a C++.
Istruzioni per la Manipolazione dei Bit
void binario(int n); …………………
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Ricerca sequenziale in un array di interi
Corso JAVA Lezione n° 02 Istituto Statale di Istruzione Superiore “F. Enriques”
1 Corso di Informatica (Programmazione) Lezione 8 (7 novembre 2008) Programmazione in Java: operatori aritmetici, operatori di assegnamento e cast.
Introduzione a Javascript
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Programmazione in Java
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Il linguaggio C Notate che ....
Informatica 6 Tipi di dato. Nelle celle di memoria di un calcolatore ci sono solo “0” e “1”, fisicamente realizzati tramite due diversi livelli di tensione.
Rappresentazioni a lunghezza fissa: problemi
Rappresentazione in virgola mobile (floating-point) Permette di rappresentare numeri con ordini di grandezza molto differenti utilizzando per la rappresentazione.
Rappresentazione dell'informazione
Rappresentazione dell'informazione 1 Se ho una rappresentazione in virgola fissa (es. su segno e 8 cifre con 3 cifre alla destra della virgola) rappresento.
Esercitazione sull’ ordinamento 20 maggio 2003
Rappresentazione degli interi
Rappresentazione dei numeri
Lezione 2 : Basi del linguaggio Variabili. Come visto nella lezione 1 le classi registrano il proprio stato nelle variabili  int cadenza = 0;  int velocita.
Esercizio n o 3 Si realizzi una calcolatrice a 32 bit con interfaccia “normale” (decimale) con LabView, utilizzando SOLAMENTE: –convertitore decimale (input)
Introduzione. 2 Perché Java? Java è un linguaggio di programmazione nato per essere eseguito su macchine e sistemi operativi molto diversi fra loro. A.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Introduzione alle Classi e agli Oggetti in Java 1.
Appunti su formati numerici. Tipi numerici Il C dispone di due tipi numerici: tipi interi e tipi reali; I tipi reali sono anche detti floating, ovvero.
Java World Introduzione.
Introduzione al linguaggio C
TIPI PRIMITIVI TIPI STRUTTURATI
JAVA usa una rappresentazione in VIRGOLA MOBILE
Corso Java Introduzione.
Programmazione e Laboratorio di Programmazione
Le variabili Tipo Valori ammissibili
Java Introduzione.
Transcript della presentazione:

1 Numeri interi e numeri in virgola mobile F. Bombi 2 6 novembre 2003

2 Dati in Java Riferimenti – Classi – Interfacce – Array – Stringhe Dati primitivi – boolean – Dati numerici byte, short, int, longchar Integral: byte, short, int, long e char floatdouble Virgola mobile: float e double

3Integral 4 tipi di numeri interi con segno – byte, short, int e long 1 tipo di numeri interi senza segno: char Se non ci sono motivi particolari si utilizzano sempre dati int base 2complemento a 2 I dati numerici sono rappresentati allinterno della JVM in base 2 e in complemento a 2 ( a parte i char ) Overflow manipolare il singolo bit Overflow a parte, possiamo ignorare che i dati numerici sono rappresentati in base 2 a meno che non si voglia manipolare il singolo bit

4 Operatori bit a bit shift Operatori di scorrimento (shift) – A sinistra << i << 3 – A destra (con segno) >> i >> 3 – A destra (logico) >>> i >>> 3 Operatori logici bit a bit – ~ NOT – & AND – | OR – ^ OR esclusivo

5 Esempi di operazioni bit a bit // verificare un bit int i = 1; // maschera if ((k & i<<3) == 0)… i i<< k & | k & | AND OR XOR // forzare a 0 (zero) int i = 1; // maschera k = k & (~(i<<3)); // forzare a 1 int i = 1; // maschera k = k |(i<<3);

6 Dati in virgola mobile IEEE Standard for Binary Floating-Point Arithmetic, I dati in virgola mobile rappresentano in modo approssimato numeri reali in un formato conforme a quanto stabilito dello standard IEEE 754 (IEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Standard ) Due formati – float – float Semplice precisione 32 bit – double – double Doppia precisione 64 bit double Per minimizzare i problemi dovuti agli arrotondamenti, di norma, si utilizzano solo dati in formato double (lunità aritmetica dei Pentium dispone di registri per le operazioni in virgola mobile di 80 bit)

7 Un numero in virgola mobile è rappresentato nella seguente forma: n = sm2 e Dove – s = +1–1 – s = +1 oppure –1 – m – m intero positivo minore di 2 24 oppure 2 53 – e– – – e intero compreso fra –149 e 104 oppure –1075 e – Not-e-Number NaN È possibile inoltre rappresentare lo zero ( +0.0 e –0.0 ), + o - e Not-e-Number ( NaN )

8 SEM Formati dei dati in virgola mobile 1 bit Ampiezza dei campi: S 1 bit 811 bit E 8 o 11 bit 2352 bit M 23 o 52 bit In decimale la precisione di un numero in virgola mobile è di circa 5 cifre oppure di circa 15 cifre

9 La mantissa o frazione La mantissa è un numero intero di 24 bit o di 53 bit con il bit più significativo sempre uguale a Della frazione vengono rappresentati solo 23 o 52 bit Cambiando lesponente la frazione può essere pensata come un numero del tipo1.xxxxxxxxx

10 Attenzione A causa dellapprossimazione con cui un numero reale è rappresentato in virgola mobile in genere – a + b + c c + b + a – a ( b + c ) a b + a c – ecc.

11 public class Fp { public static void main (String[] arg) { double a, b, c; a = 1.0e100; b = -1.0e100; c = 1.0; System.out.println ("a: " + a + " b: " + b + " c: " + c); System.out.println ("a + b + c: " + (a+b+c)); System.out.println ("a + c + b: " + (a+c+b)); System.out.println ("a*a*b*b: " +a*a*b*b); System.out.println ("a*a*a*b: " +a*a*a*b); for (int i = 0; i < 100; i++) { double z = 1.0/i; if (z*i != 1.0) System.out.println ("l: " + i + " z*i: " + z*i); } a = ; System.out.println ((int)a + " " + (int)-a); a = 0.0; b = - 0.0; System.out.println (a + " " + b + " " + b/1.0 + " " + (a==b)); a = 1e308; b = 100.; c = ; System.out.println ("a(b+c): " + (a*(b+c)) + " (a*b + a*c): " + (a*b + a*c)); System.out.println ("a*b: " + (a*b) + " (a*c): " + (a*c)); } a: 1.0E100 b: -1.0E100 c: 1.0 a + b + c: 1.0 a + c + b: 0.0 a*a*b*b: Infinity a*a*a*b: -Infinity l: 0 z*i: NaN l: 49 z*i: l: 98 z*i: true a(b+c): E298 (a*b + a*c): NaN a*b: Infinity (a*c): -Infinity