1
Desarrollar un algoritmo claro para la conversión antes de empezar a escribir código. Se necesitan dos variables para el algoritmo : un acumulador para realizar un seguimiento de los resultados y un " poder" variable para realizar un seguimiento de la creciente potencia de 2 que se describen las diferentes posiciones de los bits del número binario. Por ejemplo , el número entero 13 se almacena en binario como 1101 . Este número es en realidad ( 1 X 2 ^ 3 ) + ( 1 X 2 ^ 2 ) + ( 2 ^ 0 X 1 ) + ( 1 X 2 ^ 0 ) o 8 + 4 + 0 + 1 = 13 . Debido a la forma en dígitos binarios se almacenan en C, empezaremos en el bit de orden inferior y multiplicando cada bit de los valores crecientes de la variable de poder y agregó que en el acumulador.
2
Describir la función en pseudocódigo , probar el pseudocódigo con unos pocos ejemplos , ajustar el pseudocódigo si es necesario y escribir el código C directamente desde el pseudocódigo . Nombre de la función : binary2integer . Entrada: un puntero a un tipo de carácter . Genere un entero. Iniciar la función mediante la definición de dos variables enteras : ACC - un acumulador y Pow - un valor que se duplica en cada paso de la conversión . Set acc a 0 y pow a 1. Continuar haciendo las tres sentencias en el bucle hasta que el puntero apunta a la " 0 \\ " personaje , y luego devolver el valor de la CAC como el valor de la función. Las tres sentencias de bucle son: Si el puntero apunta a un " 1 ", añade el valor de prisionero de guerra a la aceleración , el doble del valor de prisionero de guerra y el incremento del puntero para apuntar a la siguiente parte
. 3
Convertir el pseudocódigo a C código: int binary2integer (char * p ) { int acc , prisionero de guerra ; acc = 0 ; pow = 1 , mientras que ( p * = ' \\ 0 ' ) { if ( * p == '1 ' ) s + = pow , pow * = 2 ; p + + } } return acc . Este código debe ser probado con varios ejemplos . Asegúrese de revisar los valores límite como 0 y 1, así como con una serie de valores como 11111, 00000, 10101 y 01010 .