Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define N 7
- void affichage(char Code[])
- {
- int c =0;
- while(c <= N) {
- printf("%c ", Code[c]);
- c++;
- }
- }
- void codeB(int n, char Code[])
- {
- int i = 0;
- if(n < 0)
- {
- n = n + 256; //transformation d'un négatif en un positif
- }
- while(i != N+1)
- {
- if(n%2 != 0)
- {
- Code[N-i]='1';
- n = n/2;
- }
- else if(n == 0)
- {
- Code[N-i]='0';
- }
- else
- {
- Code[N-i]='0';
- n = n/2;
- }
- i++;
- }
- }
- int decodeB (char Code[])
- {
- int somme = 0, i;
- for(i = 0; i <= N; i++)
- {
- if(Code[i] == '1')
- {
- somme = somme + puisDe2(N-i);
- }
- }
- if(Code[0] == '1')
- {
- somme = somme - 256;
- }
- return somme;
- }
- void addB(char Code1[], char Code2[], char CodeRes[])
- {
- int i = N;
- char ret = '0';
- for(i; i >= 0; i--)
- {
- if(Code1[i] == '0' && Code2[i] == '0' && ret == '0')
- {
- CodeRes[i] = '0';
- }
- else if(Code1[i] == '1' && Code2[i] == '1' && ret == '0')
- {
- CodeRes[i] = '0';
- ret = '1';
- }
- else if(((Code1[i] == '0' && Code2[i] == '1') || (Code1[i] == '1' || Code2[i] == '0')) && ret == '0')
- {
- CodeRes[i] = '1';
- }
- else if(((Code1[i] == '0' && Code2[i] == '1') || (Code1[i] == '1' || Code2[i] == '0')) && ret == '1')
- {
- CodeRes[i] = '0';
- ret = '0';
- }
- else if(((Code1[i] == '1' && Code2[i] == '1') && ret == '1'))
- {
- CodeRes[i] = '1';
- ret = '1';
- }
- CodeRes[0] = '0';
- }
- }
- void multi2(int n, char Code[], char CodeRes[])
- {
- int i = 0, j = 0;
- if (Code[0] == '0')
- {
- for(j = 1; j <= n; j++)
- {
- for(i = 0; i < N; i++)
- {
- CodeRes[i] = Code[i+1];
- }
- CodeRes[N-1] = '0';
- Code = CodeRes;
- }
- }
- }
- int puisDe2(int n)
- {
- int i = 0, p = 1;
- for(i = 1; i <= n; i++)
- {
- p = p * 2;
- }
- return p;
- }
- int main()
- {
- int num1, num2, n;
- char Code1[N], Code2[N], CodeRes[N];
- printf("Entrer un nombre (compris entre -128 et 127) : num 1= ");
- scanf("%d", &num1);
- printf("Entrer un nombre (compris entre -128 et 127) : num 2= ");
- scanf("%d", &num2);
- if( (num1 < -128) || (num1 > 127) || (num2 < -128) || (num2 > 127)) //vérification du nombre
- {
- printf("*** Le nombre a coder ne rentre pas dans l'intervale ***");
- }
- //Codage / decodage de num1
- codeB(num1, Code1); //codage
- printf("\nCodage de num1 : ");
- affichage(Code1);
- printf("\nDecodage de num 1 : %d \n", decodeB(Code1)); //décodage
- /*multi2(n, Code1, CodeRes);
- c = 0;
- printf("num1 * 2^%d = ", n); //multiplication
- while(c <= N) {
- printf("%c ", Code1[c]);
- c++;
- }
- printf("\n");*/
- //Codage / decodage de num2
- codeB(num2, Code2); //codage
- printf("\nCodage de num2 : ");
- affichage(Code2);
- printf("\nDecodage de num 2 : %d \n", decodeB(Code2)); //décodage
- /*multi2(n, Code2, CodeRes);
- c = 0;
- printf("num2 * 2^%d = ", n); //multiplication
- while(c <= N) {
- printf("%c ", Code2[c]);
- c++;
- }
- printf("\n");*/
- //somme des 2 termes en binaire
- addB(Code1, Code2, CodeRes);
- printf("\n\nnum1 + num2 = ");
- affichage(CodeRes);
- //printf("Par quelle puissance de 2 voulez vous multiplier les nombres ? : ");
- //scanf("%d", &n);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement