Les dejo este código para que me digan de que otra manera se puede lograr lo mismo, los consulto porque siempre los expertos como Uds. tienen una manera distinta de lo que yo me pude imaginar, no realice muchas pruebas pero las que realice me dan el resultado correcto, la lógica me parece que es coherente.-
En cuanto al float es porque forma parte de una calculadora que además de sumar, restar, etc., transforma un decimal en binario, en hexadecimal y viceversa.-
Código
Bueno es todo.-
#include <stdio.h> #include <string.h> int main(void){ char cadena[33]; float binario = 1100110; int elementos, decimal = 0, operando = 1; for(--elementos; elementos >= 0; elementos-- ){ if( cadena[elementos] == '1' ){ decimal += operando; } operando *= 2; } return 0; }
Saludos.
Daniel