/*Directives de pre-processeur*/
#include <iostream>
#include <limits.h>
#include <iomanip>
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;
}