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 <stdio.h> 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; } |
Commenti