Casting And Xor Or Not Operatori di confronto e logici Appunti sul C al servizio di tutti
L’ ultima volta abbiamo parlato del comando %modulo che
ci restituisce il resto su una divisione tra numeri interi quell’ errore di
dividere 5/2 = 2 può essere evitato cambiando il tipo di assegnamento della
variabile , già per se il compilatore lo fa da solo quando trova numeri di tipi diversi questo lavoro si chiama il casting se il compilatore trova :
1° operando 2°operando Risultato restituito
long double double long double
double float double
float long int float
double long int double
int char short int
long int short int long int
Anche se il compilatore sa cosa deve fare possiamo sempre perdere
l’ informazioni meglio prevedere sempre prima come abbiamo detto se un intero INT 5/2 porta 2 anche se avessimo un Intero e un float o double il compilatore ci può restituire 2,00
Per fare il casting si usa cosi :se abbiamo A e B numeri interi mentre C è un tipo double o float cosi ci restituisce il numero preciso 5/2= 2,5 ecco come si usa il casting :
c= (double) a / (double) b
Nella lezione scorsa si parlava dei confronti ora affronteremo altri comandi logici che sono AND && , NOT! , OR||, XOR^ , questi confronta il Vero =1 con il Falso =0 vediamo come funziona :
AND&&, se trova A e B entrambi Veri = 1 allora è Vero = 1 , se A è 1 e B è 0 allora è Falso = 0, se A è 0 e B è 1 allora è Falso = 0, se A e B sono 0 allora tutto è Falso = 0
OR||, se trova A e B = 1 Vero allora è Vero = 1, se trova A = 1 e B= 0 oppure trova A = 0 e B = 1 allora tutto rimane Vero =
1 , se trova A e B = 0 restituisce 0 =Falso
XOR ^ , ovvero se trova A e B = 1 Vero allora è Falso = 0 , se A=1 e B= 0 oppure A= 0 e B= 1 restituisce Falso = 0 , se A e B sono 0 allora rimane 0 = Falso
NOT! Se a =1 restituisce Falso = 0 , se A = 0
restituisce Vero = 1
Abbiamo già visto l’ operatori razionali e logici questi fanno i confronti se A e B sono uguali ==, maggiori >, o diversi !=, oppure minori uguale <=, l’ operatori logici è AND,OR,XOR e NOT che abbiamo appena visto poc’anzi, ci sono altri uguali per assegnare se li vede molto spesso sono usati nel C++ ma il nostro compilatore li conosce vediamoli è operatori assegnazione = A= 3, e possono essere diversi:
(+=, -=, *=, /=, %=, >>=, <<=, &=, ^= ,|= ) possiamo usarli come :
A += 3 equivale dire A= A +3 , A*=B equivale dire A= A * B e cosi via
Quelli scritti in rosso sono operatori diversi che lavora sui bit e sono (<<SHIFT SINISTRO , >>SHIFT DESTRO, & AND, |OR, ^XOR, ~NOT ) (~tasti ALT+126) questi operatori Bit Bit lavorano solo con i numeri interi poi non ho trovato come usarli forse lavorano uguale ma fa i controlli su i bit anziché sulle variabili da un testo ho trovato solo questo che copio e incollo viene dal testo :
Guida pratica alla Programmazione
Autore: BlackLight < blacklight@autistici.org >
rilasciato sotto licenza GNU GPL 3, copyleft 2005-2008
Un'altra operazione logica messa a disposizione dal C è lo SHIFT.
Immaginiamo di avere una variabile int i = 4; scritta in binario (facciamo per
comodità a 4 bit) sappiamo che equivale a 0100. Fare uno shift a sinistra di 1 bit (la
scrittura in questo caso è <<) equivale a spostare tutti i bit di un posto a sinistra: la
nostra variabile binaria da 0100 diventa quindi 1000, quindi i da 4 diventa per magia
8! Una cosa degenere in C si scrive così:
int i = 4;
i = i << 1; // Faccio lo shift a sinistra di 1 bit
C'è anche lo shift a destra, il simbolo è >>. Ad esempio, se facciamo uno shift a
destra di 1 bit di i, questa variabile da 0100 diventa 0010, quindi da 4 diventa 2:
int i = 4;
i = i >> 1; // Faccio lo shift a destra di 1 bit
Ecco dove trovare una nuova figura di quello che abbiamo parlato qui,cosi ho sintetizzato ... speriamo che sia pratica
http://im4.freeforumzone.it/up/49/83/1372117257.jpg
Ciao grazie alla prossima ByMpt-Zorobabele
[Modificato da JehovaZorobabele 02/05/2016 17:27]