Decimal --> binaire et inversement, prog en C

Fermé
waterminator Messages postés 11 Date d'inscription jeudi 9 décembre 2010 Statut Membre Dernière intervention 13 mars 2011 - 13 mars 2011 à 18:06
.N Messages postés 25 Date d'inscription samedi 12 mars 2011 Statut Membre Dernière intervention 17 mars 2011 - 13 mars 2011 à 22:25
Bonjour,

pour un projet j'ai besoin d'une fonction qui converti un nombre decimal en binaire et un binaire en decimal.
le programme doit retourner un int *
mon probleme est que je n'arrive absolument pas a comprendre comment on passe d'une base a une autre...
pouvez vous m'aider?

1 réponse

.N Messages postés 25 Date d'inscription samedi 12 mars 2011 Statut Membre Dernière intervention 17 mars 2011 561
13 mars 2011 à 22:25
Hum, sache tout d'abord que physiquement parlant, dans un ordinateur, tous les nombres sont en binaires (enfin, je serais surpris d'en trouver un avec autre chose que des bits)... toute information est un ou plusieurs octets, eux-même constitués de bits. Donc il n'existe pas de «nombre décimal» à proprement parler. On peut créer des représentations virtuelles de nombres décimales, dont la plus utilisée est sans doute celle sous forme de chaîne de caractères avec les correspondances numériques du code ASCII.
Soit l'intervalle de '0' à '9', c'est-à-dire de 48 à 58 (ou de 0x30 à 0x3A).

Tu dis que ton programme doit retourner un pointeur sur entier (int*). Je ne vois donc pas quel est l'intérêt de créer une représentation binaire virtuelle d'un nombre. Ceci dit, peut-être voulais-tu dire (char*). Dans ce cas, tu peux utiliser la fonction (non standard certes) :

char *  itoa ( int value, char * str, int base );

par exemple :
char *pTemp = (char*) malloc((sizeof(int) * 8 + 1) * sizeof(char));
pTemp = itoa ( 12345, pTemp, 2);
printf("%d vaut en binaire %s\n", 12345, pTemp);
0