Aïe, ça galère. La conversion manuelle décimal <-> binaire est très simple, pourvu qu'on ne se complique pas la vie.
Imaginons que votre série de bits soit représentée par : x x x x x x x x
Il suffit de les associer à des puissances de 2 en l'écrivant comme ceci :
128 64 32 16 8 4 2 1
x x x x x x x x
Si maintenant on prend par exemple la valeur 01101001, il suffit de l'écrire :
128 64 32 16 8 4 2 1
0 1 1 0 1 0 0 1
Il ne reste plus qu'à faire la somme des valeurs décimales pour lesquelles le bit est égal à 1, donc 64+32+8+1=105.
Pareil dans le sens inverse évidemment. A noter qu'on peut également convertir en hexadécimal avec cette méthode en scindant la chaine binaire par tranches de 4 bits et en recommençant la numérotation décimale. Dans notre exemple :
8 4 2 1 || 8 4 2 1
0 1 1 0 || 1 0 0 1
= 6 || = 9 => donc 69 en hexa !
Pour les valeurs >10 en hexa on prendra 10=A ; 11=B ; 12=C ; 13=D ; 14=E ; 15=F.
Rosella00168Messages postés12 novembre 2007Date d'inscription 8 septembre 2010Dernière intervention
6 janv. 2008 à 09:51
Pour convertir un nombre décimal en binaire, il suffit de le diviser par 2, le reste tu le mets dans une chaîne & le résultat tu le redivises encore par 2, & tu fais la même chose jusqu'à ce que le résultat s'annule.
se n"ai pas toute a fai sa,,, sa foctionne qu'avec des chiffre paire
genre 234=
234/2=117 aucune retenu donc 0
117/2=58,5 une retenu donc 1
58/2 = 29 pas de retenu 0
29/2 = 14,5 retenu donc 1
14/2 = 7 non retenu 0
7/2 =3,5 retenu donc 1
3/2 =1,5 1
et 1/2 reste 1 donc 1
maintenant pour écrire le resultat reprendre les resultat a l'envers
resultat actuel 01010111 devient 11101010
234 = 11101010
Si travaille en 8 bits, on garde que l'entier du résultat.
Décimal : 25/2 = 2,5
Binaire : 00011001(= 25) / 0000010(= 2) = 00000010(= 2)
Donc pour la conversion :
25 / 16 = 1 reste 9
9 / 8 = 1 reste 1
1 / 4 = 0 reste 1
1 / 2 = 0 reste 1
1 / 1 = 1 reste 0
Ce qui donne donc 11001 (= 00011001)
si c'est en C, le mieux est d'utiliser les opérateurs bit à bit (bitwise en anglais: &, |, <<, >>, ~) pour lire chaque bit du nombre.
par ex:avec la macro
#define bit_test(reg, num) ((reg&(1<<num))!=0)
bit_test(nombre, i) teste le bit n° i de nombre et renvoie 1 si il vaut 1 et 0 dans l'autre cas.
zinoben57Messages postés25 juillet 2008Date d'inscription24 juin 2010Dernière intervention
9 déc. 2008 à 01:55
petite info ilya un programme calculatrice qui permet de calculé et convertire instantanément en binaire decimale hexadecimale octel, il se nome eval calculatrice le liens
http://pocketpcfreeware.com/fr/index.php?soft=34 le programme testé et fonctione sur pocketPc vista pas testé sur Xp
POURQUOI EN TRANSFORME 49 EN NOMBRE BINAIRE SA DONNE 100011 ET EN LE TRANSFORME EN CHIFRE SA DONNE 35 ET EN LE TRANSFORME EN BINAIRE SA DONNE 110001 ET EN LE TRANSFORME EN CHIFRE SA DONNE <<< 49 >>>
JE LES AI CONVERTI MOI MEME AVEC DES METHODES POUR CONVERTIR LE BINAIRE EN CHIFFRE / ET LE CHIFRE EN BINAIRE
Juste une petite précision : le binaire se lit et s'écrit de droite à gauche....
Ce qui signifie que ta méthode de conversion inverse le sens de lecture :-)
nombre entier en décimal au clavier, l'afficher en hexadécimal à l'écran
#include <stdio.h>
#include <conio.h>
void main()
{
int nombre;
printf("ENTRER UN NOMBRE ENTIER: ");
scanf("%d",&nombre);
printf("VOICI CE NOMBRE EN HEXADECIMAL: %x\n",nombre);
printf("POUR CONTINUER FRAPPER UNE TOUCHE ");
getch();
}
Pour plus d'exercices avec solutions
http://istantic.blogspot.com/2012/02/exercices-corriges-langace-c-la.html
Ce document intitulé « convertir nombre decimal à binaire » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Combien cela coûte-t-il au total ? Quelles aides apportent l'état et les acteurs du marché pour alléger cette charge non choisie ? Tous les détails sur Commentçamarche.net.
je veux svp le code d'une conversion de decimal vers hexadecimal par le language vb2005
merci d'avance