C - Shift a destra e sinistra | controllare se un numero è pari o dispari
Un'altra lezione sul linguaggio di programmazione C.
Oggi vedremo come effettuare divisioni e moltiplicazioni per 2^n. Grazie ad operatori di basso livello, BITWISE. E vedremo utilizzando l'and Bitwise (&) come controllare se un numero x è pari o dispari.
#include
int main(){
int y;
int z = 40;
int x = 40; //40 che è pari
y = x >> 1; //shift a destra - [equivale a dividere x per 2] e assegna il risultato a y
z = y << 1; //shif a sinistra - [equivale a moltiplicare y per 2] - dove 1 è l'esponente del 2. (2^1)
// y <<= 1; // scritto in modo compatto
// y <<= 2; //equivale a fare una moltiplicazione per 2^2 quindi per 4.
// y >>= 3; //equivale a fare una divisione per 2^3 = 8.
printf("%d shift a destra (diviso 2) = %d\n moltiplicato per 2 = %d \n", x, y, z);
//altre notazioni per verifcare se un numero è pari o dispari:
if (z % 2 == 1)//se il resto della divisione per 2 è 1, allora sarà dispari
printf("%d è un numero dispari \n", z);
if (z % 2 == 0)// se il resto della divisione per 2 è 0, allora sarà pari
printf("%d è un numero pari \n", z);
//NOTAZIONE BITWISE
if (x & 1){//l'espressione restituisce 1 se l'ultimo bit a destra è 1 quindi x è dispari.
printf("%d è dispari \n", x);
}else{//Se restituisce 0 allora x è pari.
printf("%d è pari \n", x);
}
y = x & 1; //y conterrà 1 se x è dispari altrimenti conterrà 0 se x è pari.
system("PAUSE");
return 0;
}