Binaire

Bonjour,
j'ai 2 programmes en C,le premier:
Pour afficher sur 8 bits la représentation binaire d'un nombre entier positif par la division successive par 2.
le deuxieme:
Ex 1 par soustraction successive de puissance de 2 ca veut par la pondération.
Exp:
197=128+64+4+1
Donc 197 est (11000101)
svp aidez moi le plus vite possible svp
Configuration: Windows Vista
Internet Explorer 7.0

6 réponses

  1. Bonjour,
    j'ai 2 programmes en langage C,le premier:
    Pour afficher sur 8 bits la représentation binaire d'un nombre entier positif par la division successive par 2.
    Exp:
    75/2=37; il reste 1
    37/2=18; il reste 1
    18/2= 9; il reste 0
    9/2= 4 ; il reste 1
    4/2= 2; il reste 0
    2/2= 2; il reste 1
    1/2= 0; il reste 1
    on prend le reste en inverse ca donne (1101011)
    pr completer 8 bits on ajoute zero a gauche et ca devient (01101011) mais si on a un grand nombre ca va prendre du temps c'est pour ca on a choisi la 2eme methode par la soustraction successive de puissance de 2 ca veut dire on suivant les ponderations de 2
    Exp:
    197=128+64+4+1
    Donc 197 est (11000101)
    je veux les solution par 2 methode svp dans le langage C
    je sais comment faire mais je sais pas rediger dans le langage c svp repondez moi le plus vite possible
    1. #include <stdio.h>
      int main (int argc,char **v)
      {int nbr=atoi(v[1]);
      int tab[7];
      int num;
      int i=0;
      while (nbr!=0)
      {num=nbr%2;
      tab[i]=num;
      printf("%d ",tab[i]);
      nbr/=2;
      printf("%d\n",nbr);
      i++;
      }
      i--;
      while(i>=0)
      {printf("%d",tab[i]);
      i--;
      }
      getchar();
      return 1;
      }
      peut-etre cela pourra vous aider....
      1. merci pr ton aide
        mais j'ia un probleme c ke si on a un grand nombre il faut dire a lutilisateur de faire la 2eme methode donc il faut un test et si le nombre est petit y'aura moins de 8bits il faut ajouter des zeros a gauche et je sais pa coment faire si vs pouvez maider encore une fois
    2. #include <stdio.h>
      int main (int argc,char **v)
      {int nbr=atoi(v[1]);
      if (nbr>255) {printf ("Faire deuxieme methode");return(-1);};
      int tab[7];
      int num;
      int i=0;
      while (nbr!=0)
      {num=nbr%2;
      tab[i]=num;
      printf("%d ",tab[i]);
      nbr/=2;
      printf("%d\n",nbr);
      i++;
      }
      while (i<8)
      {tab[i]=0;
      i++;}
      i--;
      while(i>=0)
      {printf("%d",tab[i]);
      i--;
      }
      getchar();
      return 1;
      }
      rajoute les quelques lignes, ca devrait marcher....
      1. merci bcp, et svp encore une fois aidez moi pr la 2eme methode
    3. #include <stdio.h>
      int main (int argc,char **v)
      {int nbr=atoi(v[1]);
      int tab[7];
      int i=0;
      if((nbr-128)>=0) {tab[i]=1;nbr-=128;i++;} else {tab[i]=0;i++;};
      if((nbr-64)>=0) {tab[i]=1;nbr-=64;i++;} else {tab[i]=0;i++;};
      if((nbr-32)>=0) {tab[i]=1;nbr-=32;i++;} else {tab[i]=0;i++;};
      if((nbr-16)>=0) {tab[i]=1;nbr-=16;i++;} else {tab[i]=0;i++;};
      if((nbr-8)>=0) {tab[i]=1;nbr-=8;i++;} else {tab[i]=0;i++;};
      if((nbr-4)>=0) {tab[i]=1;nbr-=4;i++;} else {tab[i]=0;i++;};
      if((nbr-2)>=0) {tab[i]=1;nbr=-2;i++;} else {tab[i]=0;i++;};
      tab[i]=nbr;
      while(i>=0)
      {printf("%d",tab[7-i]);
      i--;
      }
      getchar();
      return 1;
      }
      pour la deuxieme methode....
      1. merci bcp pr votre mercibcp bcp bcp