/*Directives de pre-processeur*/ #include #include #include using namespace std; //Pour le C++ /*************************************************** Fonction affichage de bit ***************************************************/ void PrintBinaryNumber(unsigned int n) { unsigned int mask; // On met le mask tout a gauche. Ne pas oublier de mettre -1 sinon on "ne verra pas ce bit" // De plus on a mis CHAR_BIT car celui varie en fonction de la compilation (du aux processeur) mask = 1 << (sizeof(unsigned int)*CHAR_BIT - 1); cout << "Voici la conversion de ce nombre en binaire : \n\n"; /***************************************************** Cas du n=0 *****************************************************/ if(n == 0) { cout << "0"; return ; } /***************************************************** Instructions permettant de passer les zeros (pour notre TP, on ne l'utilise pas car on veut afficher ces zeros) *****************************************************/ /*while(!((mask) & n)) { mask >>= 1; }*/ do { /* Si ce nombre (codé en binaire) et le mask donne 1 alors on affiche 1 sinon on affiche 0*/ cout << ((n & mask) ? "1 " : "0 "); }while(mask >>= 1); // on decale vers la droite 'mask' } /**************************************************** Fonction complements des bits ****************************************************/ void PrintBinaryInverseNumber(unsigned int n) { unsigned int mask; int cpt= 1; // On met le mask tout a gauche. Ne pas oublier de mettre -1 sinon on "ne verra pas ce bit" // De plus on a mis CHAR_BIT car celui varie en fonction de la compilation (du aux processeur) mask = 1 << (sizeof(unsigned int)*CHAR_BIT - 1); if(n == 0) { while (cpt <= 32) { cout << "1 "; cpt ++; } } } int main() { int number; char rep; //Pour recommencer le traitement cout << "\t\t T R A I T E M E N T\t D E\t B I T S\n\n\n"; do { cout <<"Entrer le nombre entier a traiter : \n\n"; cin >> number; cout <<"\n"; fflush(stdin); /*Appel de la fonction affichage*/ PrintBinaryNumber(number); cout << "\n\n"; fflush(stdin); PrintBinaryInverseNumber(number); cout <<"\n\n"; fflush(stdin); cout << "Recommencer (o/n) ?"; cin >> rep; fflush(stdin); }while (rep!='n'); return 0; }