Appunti per Scuola e Università
humanisticheUmanistiche
Appunti e tesine di tutte le materie per gli studenti delle scuole medie riguardanti le materie umanistiche: dall'italiano alla storia riguardanti le materie umanistiche: dall'italiano alla storia 
sceintificheScientifiche
Appunti, analisi, compresione per le scuole medie suddivisi per materie scientifiche, per ognuna troverai appunti, dispense, esercitazioni, tesi e riassunti in download.
tecnicheTecniche
Gli appunti, le tesine e riassunti di tecnica amministrativa, ingegneria tecnico, costruzione. Tutti gli appunti di AppuntiMania.com gratis!
Appunti
informatica
CComputerDatabaseInternetJava
Linux unixReti


AppuntiMania.com » Informatica » Appunti di c » Operatori aritmetici

Operatori aritmetici




Visite: 1404Gradito:apreciate stela [ Picolo appunti ]
Leggi anche appunti:

L'i/o e la gestione dei file


L'I/O e la gestione dei file Per Input/Output (I/O) si intende l'insieme delle

Allocazione dinamica della memoria


Allocazione dinamica della memoria Quando è dichiarata una variabile, il compilatore

Operatori aritmetici


Operatori aritmetici Gli operatori aritmetici del C sono i simboli di addizione
immagine di categoria

Scarica gratis Operatori aritmetici

Operatori aritmetici

Gli operatori aritmetici del C sono i simboli di addizione (' '), sottrazione (' '), divisione (' ') e moltiplicazione (' '), quest'ultimo da non confondere con l'operatore di indirezione (pag.  ) che utilizza il medesimo simbolo. Anche l'utilizzo di tali operatori appare piuttosto scontato; è comunque opportuno sottolineare che tra di essi valgono le normali regole di precedenza algebrica, per cui le operazioni di moltiplicazione e divisione si calcolano, in assenza di parentesi, prima di quelle di addizione e sottrazione. Così, ad esempio, l'espressione

a = b + c * 4 - d / 2;

è calcolata come

a = b + (c * 4) - (d / 2);

Vedere anche l'operatore di negazione algebrica, pag. 

Resto di divisione intera

Quando si effettua una divisione tra due interi, il C restituisce solamente la parte intera del risultato. Se esiste un resto, questo è perso. Ad esempio, l'espressione

a = 14 / 3;

assegna  ad a

Se interessa conoscere il resto della divisione, è necessario utilizzare l'operatore '

a = 14 % 3;

assegna ad a il valore  , cioè il resto dell'operazione; in pratica, l'operatore ' ' è complementare all'operatore ' ', ma è applicabile esclusivamente tra valori rientranti nella categoria degli integral (pag. 

Shift su bit

Pur essendo classificato normalmente tra i linguaggi di alto livello, il C manifesta spesso la propria natura di linguaggio orientato al sistema: gli operatori su bit di cui dispone sono una delle caratteristiche che contribuiscono a renderlo particolarmente vicino alla macchina. Tali operatori consentono di agire sui dati integral considerandoli semplici sequenze di bit.

Particolarmente interessanti risultano due operatori che permettono di traslare, cioè di 'fare scorrere', di un certo numero di posizioni a destra o sinistra i bit di un valore: si tratta dei cosiddetti operatori di shift. In particolare, lo shift a sinistra si esprime col simbolo '<<', mentre quello a destra (indovinate un po') con '>>'. Esempio:

a = 1;

printf('%dn',a <<= 2);

printf('%dn',a >> 1);

Il frammento di codice riportato produce la visualizzazione dei numeri  ; infatti, il numero  in forma binaria è . Traslando a sinistra i bit di due posizioni, si ottiene , che è, appunto,  . Come si è detto a pag.  , l'operatore di assegnamento può essere composto con gli operatori su bit: ne segue che la seconda riga di codice modifica il valore di a, assegnandole il suo stesso valore traslato a sinistra di due posizioni. La seconda chiamata a printf() visualizza il valore  , restituito dall'espressione che trasla a destra di una posizione i bit del valore presente in a ( ), ma questa volta a non è modificata.

Va osservato che l'operazione di shift rende privi di significato i primi o gli ultimi bit del valore (a seconda che la traslazione avvenga verso sinistra o, rispettivamente, verso destra) : quegli spazi sono riempiti con bit di valore opportuno. Nel caso di shift a sinistra non vi è mai problema: i bit lasciati liberi sono riempiti con bit a zero; ma nel caso di uno shift a destra le cose si complicano.

Se l'integral su cui è effettuato lo shift è senza segno, o è signed ma positivo, allora anche in questo caso sono utilizzati bit nulli come riempitivo. Se, al contrario, l'integral è di tipo signed ed è negativo, allora va tenuto presente che il suo bit più significativo, cioè quello all'estrema sinistra, è usato proprio per esprimere il segno. Alcuni processori estendono il segno, cioè riempiono i bit lasciati liberi dallo shift con bit a uno; altri invece inseriscono comunque bit nulli. Pertanto, a seconda del calcolatore su cui è eseguita, una operazione di shift a sinistra come la seguente:

signed char sc;


sc = -1; // In bits e' 11111111

sc >>= 4; // rimane 11111111 con E.S.; diventa 00001111 senza E.S.

può avere quale effetto un valore finale per sc pari ancora a  , se il processore effettua l'estensione del segno, oppure pari a  se non vi è estensione di segno. Cautela, dunque: consultare la documentazione della macchina prima di azzardare ipotesi.




 Detti bit, per farla breve, vengono 'spinti fuori' dallo spazio a loro disposizione e si perdono nel nulla.

 L'estensione del segno dipende dal processore e non dal compilatore. Questo si limita infatti a utilizzare le istruzioni assembler di shift su bit per codificare opportunamente le istruzioni C che coinvolgono gli operatori di shift. Come è noto, ogni processore ha il 'proprio' assembler, pertanto il comportamento della macchina dipende dal significato che tali istruzioni assembly hanno per quel particolare processore. I processori Intel effettuano l'estensione del segno.

Scarica gratis Operatori aritmetici
Appunti su:



Scarica 100% gratis e , tesine, riassunti



Registrati ora

Password dimenticata?
  • Appunti superiori
  • In questa sezione troverai sunti esame, dispense, appunti universitari, esercitazioni e tesi, suddivisi per le principali facoltà.
  • Università
  • Appunti, dispense, esercitazioni, riassunti direttamente dalla tua aula Universitaria
  • all'Informatica
  • Introduzione all'Informatica, Information and Comunication Tecnology, componenti del computer, software, hardware ...