La façon la plus rapire de calculer en binai.

Résolu
Turki1923 Messages postés 535 Date d'inscription   Statut Membre Dernière intervention   -  
Turki1923 Messages postés 535 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai appris une façon de transformer les nombres décimal en binaire sur le SdZ .
Mais je voudrai une meilleur façon de convertir les décimal en binaire .


Merci d'avance pour vos réponses .

3 réponses

lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Apprendre les divisions par 2 ;-))
Peut être tu devrais donner un peu plus des précisions. Tu veux le faire en quel langage?
De toute façon quelque soit le langage tu peux commencer d'écrire un algorithme en pseudo code.
0
Turki1923 Messages postés 535 Date d'inscription   Statut Membre Dernière intervention   10
 
Merci de ta réponse .

par exemple moi pour convertir un nombre en binaire j'uttilise cette téchnique :

la table des puissances de 2 :


2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
128 64 32 16 8 4 2

0 0 1 0 1 0 0

exemple disons que j'ai le nombre 40 .

je regarde si 128 rentre dans 40 si non je mes 0 . (comme je l'ai fait en haut
puis je regarde si 64 rentre dans 40 si non je mes 0
puis je regarde si 32 rentre dans 40 oui je mes donc 1
puis je fais 40 ? 32 = 8 . je continue donc avec le 8 .
ainsi de suite ...


mais je trouve que cette technique est beaucoup trop longue , ny'aurai-t-il pas un autre moyen de trouveer la réponse ?

et si vous pouviez me donné un exemple (pour que je comprenne mieu)
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Tu pourrais par exemple utiliser l'opérateur décalage à droite en C, sachant que chaque décalage à droite est équivalent avec une division par deux.
0
Turki1923 Messages postés 535 Date d'inscription   Statut Membre Dernière intervention   10
 
Je n'ai pas compris grand chose a ta réponse :)

peux-tu me donné un exemple ?
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Re,

Il y a sûrement mieux. J'ai trouvé cette fonction dans mes archives.
lami20j@debian-acer:~$ cat dec2bin.c 
#include<stdio.h>

void dec2bin (char *bin,unsigned nb);
int main()
{
       char bin[34];
       unsigned decimal;

       printf("Entrez le nombre décimal : ");
       scanf("%u",&decimal);
       getchar();
       dec2bin(bin,decimal);
       printf("%s\n",bin);
       return 0;
}

void dec2bin(char *bin,unsigned nb){
       int i,j,k,tmp;

       for(i=0;nb != 0;nb >>= 1){
               if(nb & 01)
                       bin[i++] = '1';
               else
                       bin[i++] = '0';
       }
       bin[i]='\0';

       for(j=0,k=i-1;j<k;++j,--k){
               tmp=bin[j];
               bin[j]=bin[k];
               bin[k]=tmp;
       }
} 
lami20j@debian-acer:~$ gcc dec2bin.c 
lami20j@debian-acer:~$ ./a.out 
Entrez le nombre décimal : 1
1
lami20j@debian-acer:~$ ./a.out 
Entrez le nombre décimal : 2
10
lami20j@debian-acer:~$ ./a.out 
Entrez le nombre décimal : 127
1111111
lami20j@debian-acer:~$ ./a.out 
Entrez le nombre décimal : 128
10000000
lami20j@debian-acer:~$ ./a.out 
Entrez le nombre décimal : 255
11111111
lami20j@debian-acer:~$ ./a.out 
Entrez le nombre décimal : 256
100000000
0
Turki1923 Messages postés 535 Date d'inscription   Statut Membre Dernière intervention   10
 
xD je vous ai pas demandé de me dire comment le convertir en langage C
je voulai dire comment le faire mentalement .
0
ghuysmans99 Messages postés 2496 Date d'inscription   Statut Contributeur Dernière intervention   340
 
Fais une série de divisions euclidiennes en gardant des nombres entiers jusqu'à ce que le quotient soit nul. Après il te suffit de récupérer les restes de division dans le sens inverse.
0
canarder Messages postés 1714 Date d'inscription   Statut Membre Dernière intervention   355
 
il y a une méthode en passant par l'hexadécimal, mais je ne la connais pas
0