binaire et décimal sont deux façons différentes de représenter des nombres entiers. Dans la programmation C , nombres binaires sont généralement stockées dans des chaînes de caractères ou un autre type de tableau. Les chaînes de caractères en C sont nommés par un pointeur de caractère qui pointe vers le bit de poids faible de la chaîne binaire . La chaîne se termine par le caractère spécial C '\\ 0' après le bit de haut rang . La conversion de ces chaînes binaires dans la valeur entière équivalent est un programme simple d'écrire - soit itérative ou récursive. Instructions
1
Développer un algorithme précis pour la conversion avant de commencer à écrire du code. Vous aurez besoin de deux variables de l' algorithme : un accumulateur de garder une trace des résultats et une "puissance " variable pour garder la trace de la montée en puissance de 2 qui décrit les différentes positions de bits du nombre binaire. Par exemple , l'entier 13 est stocké en tant que binaire 1101 . Ce nombre est en fait ( 1 X 2 ^ 3 ) + ( 1 x 2 ^ 2 ) + ( 0 x 2 ^ 1 ) + ( 1 x 2 ^ 0) ou de 8 + 4 + 0 + 1 = 13 . En raison de la façon chiffres binaires sont stockés dans C , nous allons commencer à le bit de poids faible et en multipliant chaque bit des valeurs croissantes de la variable de la puissance et de l'ajouter dans l'accumulateur .
2
Décrire la fonction de pseudo , tester le pseudo avec quelques exemples, ajuster le pseudo si nécessaire et écrire du code C directement à partir du pseudo . Nom de la fonction : binary2integer . Entrée: un pointeur à un type de caractère . Délivrer en sortie un nombre entier . Lancez la fonction en définissant deux variables entières : ACC - un accumulateur et pow - une valeur qui double à chaque étape de la conversion . Réglez ACC sur 0 et pow à 1. Continuer à faire les trois déclarations dans la boucle jusqu'à ce que le pointeur pointe vers le répertoire "\\ 0" caractère, puis retourner la valeur du CAC à la valeur de la fonction. Les trois instructions de boucle sont: Si le pointeur pointe vers un «1», ajouter la valeur de pow ACC , le double de la valeur de la poudreuse et minimum le pointeur pour pointer vers le prochain bit
. 3
Convertir le pseudo de code C : int binary2integer (char * p) {int acc , pow , acc = 0; pow = 1; while ( p * = '\\ 0' ! ) {if (p * == '1 ') acc + = pow , pow * = 2; p + + } return } acc . Ce code doit être testé avec plusieurs exemples. Assurez-vous de vérifier les valeurs limites telles que 0 et 1 , ainsi que d'une variété de valeurs telles que 11111 , 00000 , 10101 et 01010 .