ciao a tutti!
Chiedo aiuto su un programma che utilizza i bitwise, vi posto il codice
Quello che non capisco è a cosa serve la variabile displayMask impostata come 1 << 31. Ho letto che serve come mascheramento ma non capisco la sua utilitàcodice:/* Il programma visualizzerà un intero unsigned nella sua rappresentazio * ne binaria, suddividendola in gruppi di otto bit. */ #include <stdio.h> void displayBits( unsigned value ); int main() { unsigned x; // variabile destinata a contenere l'input dell'utente printf("Inserisci un intero unsigned: "); scanf("%u", &x); displayBits(x); return 0; } // Visualizza i bit di un valore intero senza segno void displayBits( unsigned value ) { unsigned c; // contatore //dichiara dispalyMask ed esegue uno scorrimento a sinistra di 31bit unsigned displayMask = 1 << 31; printf("%10u = ", value); // itera scorrendo i bit for ( c=1; c <= 32; c++ ) { putchar(value & displayMask ? '1' : '0'); value <<= 1; // esegue scorrimento a sinistra di 1 su value // manda in output uno spazio dopo 8 bit if ( c % 8 == 0 ) { putchar(' '); } } putchar('\n'); }![]()
L'istruzione putchar(value & displayMask ? '1' : '0'); confronta i valori binari di value e di displayMask e dovrebbe restituire 1 se i bit a confronto sono entrambi impostati a 1 e 0 se sono diversi tra loro; ma in questo caso dovrebbe stampare solo zeri in quanto la variabile displayMask, spostando tutti i bit a sinistra di 32 posizioni, contiene solo zeri?
Quindi come fà a stamparmi un numero in binario?
Spero che mi possiate dare una mano![]()