#include /* Calcul de l'operation binaire a ET b en */ /* calculant les representations de a et de b */ void printBinary(int bits[8]) /* Affiche une valeur binaire bits */ { int i,nb_Bits=8; for(i=0;i<=nb_Bits-1;i=i+1) { printf("%d",bits[i]); } } void convBinary(int v,int bits[8]) /* Calcul en binaire de v dans bits */ { int i,nb_Bits=8; int number,remaining; number=v; for(i=nb_Bits-1;i>=0;i=i-1) { remaining=number%2; number=number/2; bits[i]=remaining; } } void andBinary(int v1Bits[8],int v2Bits[8], /* Calcul Binaire de ET */ int v1Andv2Bits[8]) { int i,nb_Bits=8; for(i=0;i<=nb_Bits-1;i=i+1) { if (v1Bits[i]+v2Bits[i]==2) { v1Andv2Bits[i]=1; } else { v1Andv2Bits[i]=0; } } } int convDecimal(int bits[8]) /* Calcul en decimal de bits */ { int i,nb_Bits=8; int m,number; number=0; m=1; for(i=nb_Bits-1;i>=0;i=i-1) { number=number+(m*bits[i]); m=m*2; } return number; } int main(void) { int a, b, number; int a_Bits[8], b_Bits[8], and_Bits[8]; printf("Give me the values of a and b\n"); printf("a? \n"); scanf("%d",&a); printf("b? \n"); scanf("%d",&b); convBinary(a,a_Bits); /* Appel de fonction: calcul binaire de a */ convBinary(b,b_Bits); /* Appel de fonction: calcul binaire de b */ andBinary(a_Bits,b_Bits,and_Bits); /* Appel de fonction: calcul binaire de a ET b */ number = convDecimal(and_Bits); /* Appel de fonction: calcul decimal de a ET b */ printf(" a: "); printBinary(a_Bits); printf("\n"); printf(" b: "); printBinary(b_Bits); printf("\n"); printf("and: "); printBinary(and_Bits); printf("\n"); printf("a AND b: %d\n",number); return 0; }