bonjour, je suis actuellement en train d'écrire une fonction permettant de faire une division de deux nombres binaires, le problème est que ma fonction fait les calculs en considérant mes mots binaires par des nombres en base 10.

le but de ma fonction est de calculer le CRC (contrôle de redondance cyclique) c'est pour cela que j'effectue la division binaire.

voici mon implémentation C actuelle :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int reste_division(int dividende, int diviseur)
  {
  int i;
  int deg_dividende;   //degré du dividende
  int deg_diviseur;	    //degré du diviseur
  int reste;	    //reste de la division
  int div_interm;	   //diviseur intermédiaire, soit 0, soit le  diviseur
 
  // recherche des degres des operandes
  deg_dividende = degre_int(dividende);
  deg_diviseur = degre_int(diviseur);
 
  // recherche du reste de la division
  div_interm = diviseur;
  reste = dividende >> (deg_dividende - deg_diviseur);
 
  for(i = (deg_dividende - deg_diviseur+1); i > 0; i--)
     {
     if (((reste >> (deg_diviseur-1)) & 0x0001) == 0) reste = reste ^ 0;
     else (reste = reste ^ diviseur);
     reste = reste << 1;
     }
  return reste;
  }