Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
GLI OPERATORI
[1.2.24]
Gli operatori sono particelle binarie che stabiliscono una relazione tra due variabili e consentono di
manipolare e controllare i dati del programma. La loro struttura in generale è:
OPERATORI ARITMETICI
OPERATORE di ASSEGNAZIONE
OPERATORI RELAZIONALI (o di relazione)
OPERATORI bit a bit
OPERATORI LOGICI
1
OPERATORI ARITMETICI
simbolo significato
+ Addizione
- Sottrazione
* Moltiplicazione
/ Divisione
% Modulo (resto della divisione tra interi)
Il loro uso è semplice e intuitivo, tuttavia è possibile sperimentare direttamente il loro uso attraverso poche
righe di codice.
2
OPERATORE di ASSEGNAZIONE
simbolo significato
= Assegnazione
In matematica scrivere a=b+c significa che il valore di a corrisponde alla somma tra b e c.
Nel linguaggio C l’operatore (=) viene declinato nel seguente modo: “assegna alla variabile a il risultato della
somma tra in contenuto della variabile b con il contenuto della variabile c”.
Pertanto prima viene computata la somma tra b e c poi viene eseguita l’assegnazione del risultato nella
variabile a.
ivalue e rvalue
Particolarmente interessante è e utile per mostrare come sono organizzati i dati nella memoria del
calcolatore è l’utilizzo delle due particelle ivalue e rvalue. Rappresentano rispettivamente lvalue
(left value) l’indirizzo di memoria di una variabile e rvalue (right valute) il suo contenuto.
Pertanto ogni variabile è identificata attraverso due indirizzi ben definiti: uno è quello che identifica la
variabile, l’altro è il suo contenuto.
3
Si può verificare che è cambiato il rvalue mentre è rimasto invariato il lvalue, l’indirizzo delle variabili.
Si tornerà sull’argomento quando si tratterà della visibilità delle variabili nelle funzioni.
4
OPERATORI RELAZIONALI (o di relazione)
Stabiliscono una relazione tra due variabili restituendo un valore logico (vero o falso).
simbolo significato
> Maggiore di…
< Minore di …
== Uguale a …
>= Maggiore o uguale a…
<= Minore o uguale a …
!= Non uguale a….
Il compilatore declina l’istruzione nel seguente modo “…se l’espressione_a è vero che <relazione> all’
espressione_b, restituisci un valore vero, in caso contrario il risultato è falso”.
L’utilizzo degli operatori di relazione sarà messo in evidenza a breve attraverso le strutture di controllo
condizionali e iterative.
5
OPERATORI ORIENTATI AI BIT
simbolo significato
& AND
| OR
^ XOR
<< SCORRIMENTO A SX
>> SCORRIMENTO A DX
~1 NOT
Effettuare delle operazioni bit a bit significa mettere in relazione logica i singoli bit tra di loro.
Supponendo di procedere con un operatore AND, si mette in relazione logica AND ciascu bit della prima
variabile con il bit dello stesso peso della seconda:
Il risultato complessivo sarà una variabile in cui ciascun bit è determinato dal risultato logico AND dei bit
delle due precedenti variabili.
1
Per la tilde (~) digitare alt+126
6
Procedendo con l’esempio …
uc_A B7 B6 B5 B4 B3 B2 B1 B0
152 1 0 0 1 1 0 0 0
uc_B B7 B6 B5 B4 B3 B2 B1 B0
95 0 1 0 1 1 1 1 1
uc_C B7 B6 B5 B4 B3 B2 B1 B0
24 0 0 0 1 1 0 0 0
L’unico bit a 1 della variabile uc_C risulta quello in cui sono entrambi a 1 i due corrispondenti bit delle
variabili in AND.
Si può facilmente verificare allo stesso modo con gli operatori OR e XOR.
7
Gli operatori di scorrimento consentono di spostare a destra (>>) o a sinistra (<<) i bit di una variabile. Il
significato è piuttosto semplice:
Scorrimento a destra ….
Ad ogni scorrimento di 1 bit, il contenuto del B7 viene rimpiazzato da uno 0 e il suo contenuto passa al B6 e,
e così via fino all’ultimo bit che viene perso.
B7 B6 B5 B4 B3 B2 B1 B0
1 0 0 1 1 0 0 1
B7 B6 B5 B4 B3 B2 B1 B0
0 1 0 0 1 1 0 0
8
Scorrimento a sinistra ….
Ad ogni scorrimento di 1 bit, il contenuto del B0 viene rimpiazzato da uno 0 e il suo contenuto passa al
passa al B1 e così via fino al primo l’ultimo bit che viene perso.
B7 B6 B5 B4 B3 B2 B1 B0
1 0 0 1 1 0 0 1
B7 B6 B5 B4 B3 B2 B1 B0
0 0 1 1 0 0 1 0
9
L’operatore NOT inverte i bit di una variabile.
Ad esempio:
sia uc_C=24 <0001 1000> scrivere uc_C= ~uc_C; significa che uc_C diventa <1110 0111> ossia 231
10
OPERATORI LOGICI
Il C mette a disposizioni operatori che stabiliscono una relazione logica tra espressioni.
simbolo significato
&& AND
|| OR
! NOT
La differenza tra gli operatori logici orientati ai bit e questi è che i primi stabiliscono una relazione tra ogni
bit del valore numerico, in questo caso sull’intero dato.
11