Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Last active December 18, 2019 21:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/130d4c2f4982302b63a8d838d05a371e to your computer and use it in GitHub Desktop.
Save parzibyte/130d4c2f4982302b63a8d838d05a371e to your computer and use it in GitHub Desktop.
Uso de la función para convertir un número binario a uno decimal - https://parzibyte.me/blog/2018/11/19/convertir-binario-decimal-c/
/*
Algoritmo que convierte un número binario
a uno decimal en C
@author parzibyte
Visita: parzibyte.me
*/
#include <stdio.h>
#include <string.h>
#define LONGITUD_MAXIMA 1000
unsigned long long binarioADecimal(char *cadenaBinaria, int longitud);
int main() {
// Esta primera parte tiene que ver con leer la entrada del usuario,
// únicamente para demostrar
char binario[LONGITUD_MAXIMA];
printf("Introduce un número binario de hasta %d caracteres:\n",
LONGITUD_MAXIMA - 1);
fgets(binario, LONGITUD_MAXIMA, stdin);
binario[strcspn(binario, "\r\n")] = 0;
// Ahora sí aquí convertimos
unsigned long long decimal = binarioADecimal(binario, strlen(binario));
printf("El binario %s es %llu en decimal", binario, decimal);
return 0;
}
unsigned long long binarioADecimal(char *cadenaBinaria, int longitud) {
unsigned long long decimal = 0;
int multiplicador = 1;
char caracterActual;
for (int i = longitud - 1; i >= 0; i--) {
caracterActual = cadenaBinaria[i];
if (caracterActual == '1') {
decimal += multiplicador;
}
multiplicador = multiplicador * 2;
}
return decimal;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment