Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/02/2010, 18:26
benekid
 
Fecha de Ingreso: septiembre-2007
Mensajes: 99
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Leer número entero en binario

Aqui tienes una posible solucion....
Solo te suma numeros predefinidos, pero no te costará mucho adaptarlo a sumas complejas! ;)

Saludos

Código:
//Programa que suma dos numeros binarios. Se tiene en cuenta el overflow y con un maximo de 6 bits.
//Autores: Carlos Beneyto y Santi Alex

#include <stdio.h>

int vector_resultado[7];
int vector1[7]={0,0,0,0,1,0,1};
int vector2[7]={0,0,0,0,1,0,1};
int acarreo=0, i;               //Variable de Acarreo, suma el acarreo en el siguiente digito

main()
{

printf("Sumar dos numeros binarios 5 (000101)\n");
printf("\t\n000101");
printf("\t\n+");
printf("\t\n000101");
printf("\t\n-------\n");

/*Bucle que recorre el vector, sumando digito a digito, desde el ultimo numero del vector,
pues la suma se hace de derecha a izquierda, para tener en cuenta el acarreo*/
for(i=6; i>=0; i--)
  {

 //Acarreo: Cambia el valor del resultado, sumando el acarreo en el siguiente valor.
  vector_resultado[i]=vector_resultado[i]+acarreo;
  acarreo=0;

  vector_resultado[i]=vector1[i]+vector2[i]+vector_resultado[i];

  //Si el resultado es la suma de 1+1, cambia el resultado a 0 y cambia la veriable acarreo a 1.
  if(vector_resultado[i]==2) { vector_resultado[i]=0; acarreo=1; }
    }

  //En caso de que haya overflow, escribe el numero en 7 bits
if(vector1[1] && vector2[1] == 1) {
    printf("\n(!) Hay Overflow, el resultado es de 7 bits\n\n");
        printf("%d%d%d%d%d%d%d", vector_resultado[0],vector_resultado[1],vector_resultado[2],vector_resultado[3],vector_resultado[4],vector_resultado[5],vector_resultado[6]);
    printf("\n\n");
}
else {
    printf("%d%d%d%d%d%d", vector_resultado[1],vector_resultado[2],vector_resultado[3],vector_resultado[4],vector_resultado[5],vector_resultado[6]);
    printf("\n\n");
}

}
__________________
---> Webnox.es