ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Suma De Numeros Bonarios


Enviado por   •  21 de Agosto de 2011  •  371 Palabras (2 Páginas)  •  871 Visitas

Página 1 de 2

SUMA DE NUMEROS BINARIOS

Para empesar el programa es necesario saber ciertas cosas primero:

0+0=0

0+1=1

1+1=0 y se lleva 1 (acarreo)

Lo que se pretende hacer es un programa que sume dos números binarios (de 4 bits) dados por el usuario, por lo que primero debemos solicitar los números y guardarlos en un arreglo, puedes fijar el número de bits de cada número o tambien solicitar el número de bits de los números.

Fijaremos a "n=3" por que los números binarios deben ser de 4 bits [0,3]

Usaremos a[n] y b[n] como los números binarios, res[n] como resultado y usaremos otra variable para llevar el acarreo "c=0"

El "%s" nos ayuda a guardar cada digito en una parte del arreglo

scanf("%s", a[]);

scanf("%s", b[]);

Porlo que si a=1011, a[0]=1, a[1]=0, a[2]=1, a[3]=1 y b=0111, b[0]=0, b[1]=1, b[2]=1, b[3]=1

Ahora hay que empesar a sumar donde necesitaremos 4 condiciones para llegar al resultado:

for(i=n;i>=0;i--)

{

/*empieza desde "n" para sumar desde la derecha y el decremento para ir hacia la izquierda*/

if(a[i]+b[i]+c=0)

{

res[i]=0;

c=0;

/*Es importante que "c" empiece siendo cero por que al sumarlo por primera ves lo mas

probable es que tenga basura y la suma salga mal*/

}

if(a[i]+b[i]+c=1)

{

res[i]=1;

c=0;

/*si la suma de a, b y c es 1 es el valor del resy pues 1 en binario es 1 por lo que el acarreo es

cero*/

}

if(a[i]+b[i]+c=2)

{

res[i]=0;

c=1;

/*2 en binario = 10, por eso res=0 y llevamos 1 como acarreo*/

}

if(a[i]+b[i]+c=3)

{

res[i]=1;

c=1;

/*finalmente 3 en binario = 11. Solo tenemos estas 4 condiciones por que solo estos 4

resultados podemos obtener sumando tres números (a,b,c)*/

}

}

Ya por ultimo lo que tenemos que hacer es imprimir primero el acarreo ("c") y después res[de 0 a 3],

si sumas los dos números de ejemplo notaras que el resultado es "10010" estos son 5 bits y res tiene 4, por eso se imprime primero el acarreo "c".

NOTA:

tu programa no funciona, 1011+0111=10010, y tu programa arroja 10011. Falta adicionar una bandera y modificarla en la segunda condicion, y en la ultima condicion tenerla en cuenta.

Pues según yo esta bien Wilmer (aunque no soy antierrores), en la tercera condición si a[3]=b[3]=1 y c=0, entonces res[3]=0 y c=1, y ya que res[3]=0 y no 1, no veo porque arrojaría 10011, sobre la bandera tienes razón encaso de que al final c=0 pues para que lo imprimes (si te refieres a eso no???).

...

Descargar como (para miembros actualizados)  txt (2 Kb)  
Leer 1 página más »
Disponible sólo en Clubensayos.com