• Non ci sono risultati.

Rappresentazione di interi

N/A
N/A
Protected

Academic year: 2021

Condividi "Rappresentazione di interi"

Copied!
21
0
0

Testo completo

(1)

Rappresentazione dei numeri

Rappresentazione di interi

– Supponiamo 2 byte (16 bit) – 2

16

= 65536

– [-32767, 32768] con m bit 2

m

-1 numeri

– Se prendiamo come segno il primo bit abbiamo ad esempio

(01111111)

2

= 127 e (11111111)

2

= -127

(2)

– Con questa rappresentazione si hanno 2 modi di rappresentare 0!!!!!!!

– Inoltre non valgono più le regole per la somma binaria

– consideriamo ad esempio i due numeri (01010000)2 = 96 e (11010000)2 = -96 ed il numero (00001000)2 = 8 ed eseguiamo le somme in binario

-96+ 11010000+

8 00001000 ___ _________

-88 11011000 = -104 errata

Rappresentazione dei numeri

(3)

Complemento a 2

– -x

10

= (2

n

– x)

2

– Si calcola invertendo 1 con 0 e viceversa e aggiungendo + 1 alla fine

– Valgono ancora le regole per la somma

(4)

Rappresentazione di reali

– Vogliamo rappresentare numeri reali distribuiti sulla retta con la distanza relativa il più piccola possibile

– 0.0004285741428571 rappresentazione non normalizzata – 0.4285741428571 x 10

-3

rappresentazione normalizzata

Rappresentazione dei numeri

(5)

Rappresentazione di reali

– Se ho a disposizione 7 cifre – 0.000428 e 0.4285741

– Ci sarà uno spazio per la mantissa e uno per l’esponente – float 4 byte

• Un bit per il segno, 23 per la mantissa e 8 per l’esponente

Rappresentazione dei numeri

(6)

Rappresentazione di reali

– Potendo l’esponente essere sia positivo che negativo, con 8 bit è possibile utilizzare i numeri compresi nell’intervallo

[ -127, 128 ]

– per cui l’esponente varia tra [ 2

-127

, 2

128

]

– che, in base 10, corrisponde ad un esponente incluso nell’intervallo

[ 10

-37

, 10

38

]

Rappresentazione dei numeri

(7)

C operativi di flusso I/O

In C sono definiti gli operatori di flusso di I/O

printf

scanf

(8)

C printf: stringa di controllo

La funzione printf riceve dal programma chiamante uno o più argomenti.

Solo il primo è obbligatorio e deve essere una stringa, che si chiama control string (stringa di controllo)

la stringa di controllo viene trasferita sullo schermo, carattere per carattere (compresi gli spazi bianchi), salvo quando sono incontrati i seguenti caratteri particolari:

" (termina la stringa di controllo)

% (introduce uno specificatore di formato)

\ (introduce una sequenza di escape)

(9)

C printf: specificatore di formato

Altri argomenti successivi alla stringa di controllo, nella chiamata a printf, rappresentano i dati da formattare e scrivere, e

possono essere costituiti da:

– costanti, – variabili, – espressioni, – o altre funzioni

Ad ogni argomento successivo alla stringa di controllo, deve corrispondere, all'interno di essa e nello stesso ordine, uno

specificatore di formato, costituito da un gruppo di caratteri

introdotto dal carattere %.

(10)

C printf: specificatore di formato

In uno specificatore di formato il campo tipo può assumere uno di questi valori.

tipo Descrizione

u, o, x valori interi assoluti, basi: decimale, ottale, esadecimale X come x ma con le cifre letterali maiuscole

d,i valori interi relativi, base decimale

f,e valori floating, notazione normale o esponenziale g come f o e (sceglie il più comodo)

E, G come e e g (scrive "E" al posto di "e")

c carattere

s stringa di caratteri

P indirizzo di memoria (in esadecimale)

(11)

printf printf (“stringa di controllo del formato”, altri argomenti)

- La stringa di controllo descrive il formato dell’output

- Gli altri argomenti sono opzionali e corrispondono alle singole specifiche di conversione

- Ogni specifica di conversione inizia con il segno di

percentuale (%) e termina con un indicatore di

conversione

(12)

Indicatore di conversione

i visualizza un intero decimale con segno

e visualizza un valore in virgola mobile nella notazione esponenziale

(6 cifre alla destra della virgola)

(sempre e solo una cifra a sinistra della virgola)

f visualizza un valore in virgola mobile nella notazione in virgola fissa

(6 cifre alla destra della virgola)

(13)

Dimensione di campo

Nel caso in cui la dimensione del campo sia maggiore del dato da visualizzare questo sarà allineato a destra all’interno di quel campo

E’ inserito tra % e indicatore di conversione (%4d) printf(“%4d\n”,1);

printf(“%4d\n”,12);

printf(“%4d\n”,123);

printf(“%4d\n”,1234);

printf(“%4d\n”,12345);

printf(“%4d\n”,-1);

printf(“%4d\n”,-12);

printf(“%4d\n”,-123);

printf(“%4d\n”,-1234);

printf(“%4d\n”,-12345);

(14)

precisione

Specifica la precisione con cui il dato dovrà essere visualizzato - per gli interi indica il numero minimo di cifre da visualizzare - per i float indica il numero di cifre dopo la virgola

E’ inserito tra % e indicatore di conversione (%.4d) int i = 873;

float f = 123.94536;

printf(“\t%.4d\n\t%.9d\n\n”, i, i);

printf(“\t%.3f\n\t%.3e\n\n”, f, f);

(15)

Sequenza di escape

Il carattere \ (backslash) non è trasferito sullo schermo, ma usato in combinazione con i caratteri successivi

– un solo carattere se si tratta di una lettera, – oppure una sequenza di cifre numeriche;

l'insieme di caratteri viene detto sequenza di escape, e viene interpretato come un unico carattere

Le sequenze di escape sono usate tipicamente per specificare caratteri speciali che non hanno il loro equivalente stampabile

– come newline, carriage return, tabulazioni, suoni ecc...,

– oppure caratteri, che da soli, hanno una funzione speciale, come le virgolette o lo stesso backslash

(16)

REGOLA

E’ opportuno che al termine di una istruzione di stampa il cursore sia situato all’inizio della linea

successiva

(17)

Sequenza di escape

Descrizione

\n Carattere di fine linea (newline) è inserito premendo il tasto Invio

\t Posiziona il cursore del video sulla tabulazione successiva (tasto TAB)

\a Emette un beep

\r Posiziona il cursore all’inizio della linea corrente

\b Il cursore ritorna indietro di un carattere (tasto Backspace)

\\ Stampa la barra inversa (backslash)

\" Stampa le doppie virgolette

\nnn carattere con codice ascii nnn (tre cifre in ottale)

\nn carattere con codice ascii nn (due cifre in esadecimale)

C++ sequenza di escape

(18)

• In generale uno specificatore di formato ha la seguente sintassi:

%[ flags][ampiezza][.precisione]tipo

– Esempio: printf("%8d", 4532) à ____4532 printf("%8d", -532) à ____-532 printf("%#6X", 255) à __0XFF

printf("%10.4s", "ciaooo")à ______ciao printf("%08.2f", -5.324) à -0005.32

C printf: specificatore di formato

esercizio3.2.cpp

(19)

Esercizi

Scrivere un algoritmo che calcoli la somma

dei primi N naturali.

(20)

Esercizi

Scrivere un programma che chiede all’utente

di digitare tre interi sulla stessa riga, e ne

visualizza la somma, il prodotto e la media.

(21)

Esercizi

Scrivere un programma che calcola il quadrato e il cubo dei numeri da 0 a 10 e li visualizzi come segue:

numero quadrato cubo

0 0 0

1 1 1

2 4 8

3 9 27

………

Riferimenti

Documenti correlati

Banche, Finanziarie, soggetti terzi ed Enti Pubblici. Tali dati sono comunque inerenti le attività economiche e commerciali da Voi svolte e possono riguardare, ad esempio,

[r]

%vettore binario Buguali= vettore==x Bmaggiori= vettore>x Bminori= vettore<x. %valore

I E possibile utilizzare costanti di tipo stringa (stringhe letterali) scritte ` tra doppio apice e senza scrivere esplicitamente il carattere di fine stringa... Lettura

In effetti la ricerca di una chiave è in media velocissima come si vede dalla tabella, ma il caso pessimo, che qui si verifica se tutte le chiavi hanno lo stesso indirizzo

In effetti la ricerca di una chiave è in media velocissima come si vede dalla tabella, ma il caso pessimo, che qui si verifica se tutte le chiavi hanno lo stesso indirizzo

Procedura e scadenze per la selezione delle strategie di sviluppo locale I riferimenti sono contenuti nelle informazioni specifiche della misura. Giustificazione della selezione,

• La moltiplicazione puo’ essere realizzata banalmente sommando al moltiplicando se stesso, un numero di volte pari al valore del moltiplicatore.. Rappresentazione binaria dei