Autor
|
Tema: Programa suma de binarios (Leído 19,699 veces)
|
shamankaly
Desconectado
Mensajes: 7
|
Hola a todos estoy asiendo un programa que ase suma de binario de 4 bits, y también suma números negativos… pero no sé cómo hacerle para que me salga el acarreo y el desbordamiento, este es el código que llevo hecho alguien podria indicarme como ponerle el acarreo y el desbordamiento
namespace _1 { class Program { static void Main(string[] args) { int numero = 0; int cuarto = 0, tercero = 0, segundo = 0, primero = 0; int numero2 = 0; int cuarto2 = 0, tercero2 = 0, segundo2 = 0, primero2 = 0; int total4, total3, total2, total1; Console.WriteLine("SUMA DE BINARIOS (CUATRO BITS)"); Console.WriteLine(); Console.WriteLine("Escribe los dos números a sumar: "); Console.WriteLine(); Console.Write(""); numero = int.Parse(Console.ReadLine()); Console.Write(""); numero2 = int.Parse(Console.ReadLine()); cuarto = numero / 1000; tercero = (numero % 1000) / 100; segundo = ((numero % 1000) % 100) / 10; primero = (((numero % 1000) % 100) % 10) % 10; cuarto2 = numero2 / 1000; tercero2 = (numero2 % 1000) / 100; segundo2 = ((numero2 % 1000) % 100) / 10; primero2 = (((numero2 % 1000) % 100) % 10) % 10; if (((primero == 0) && (primero2 == 0)) || ((primero == 1) && (primero2 == 1))) total1 = 0; else total1 = 1; if (((primero == 1) && (primero2 == 1)) && ((segundo == 1) && (segundo2 == 1))) total2 = 1; else if (((((primero == 1) && (primero2 == 1)) && ((segundo == 1) && (segundo2 == 0))) || (((primero == 1) && (primero2 == 1)) && ((segundo == 1) && (segundo2 == 0)))) || (((segundo == 0) && (segundo2 == 0)) || ((segundo == 1) && (segundo2 == 1)))) total2 = 0; else total2 = 1; if (((segundo == 1) && (segundo2 == 1)) && ((tercero == 1) && (tercero2 == 1))) total3 = 1; else if (((((segundo == 1) && (segundo2 == 1)) && ((tercero == 1) && (tercero2 == 0))) || (((segundo == 1) && (segundo2 == 1)) && ((tercero == 1) && (tercero2 == 0)))) || (((tercero == 0) && (tercero2 == 0)) || ((tercero == 1) && (tercero2 == 1)))) total3 = 0; else total3 = 1; if (((((tercero == 1) && (tercero2 == 1)) && ((cuarto == 1) && (cuarto2 == 0))) || (((tercero == 1) && (tercero2 == 1)) && ((cuarto == 1) && (cuarto2 == 0)))) || (((cuarto == 0) && (cuarto2 == 0)) || ((cuarto == 1) && (cuarto2 == 1)))) total4 = 0; else total4 = 1; Console.WriteLine(); Console.WriteLine("{0}{1}{2}{3}", total4, total3, total2, total1); Console.ReadLine();
} } }
|
|
« Última modificación: 13 Mayo 2009, 05:08 am por shamankaly »
|
En línea
|
|
|
|
<sylar>
Desconectado
Mensajes: 61
|
saludos encontre esto en la red talvez te pueda servir Para empezar 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 empezar 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+b+c=0) { res=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+b+c=1) { res=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+b+c=2) { res=0; c=1; /*2 en binario = 10, por eso res=0 y llevamos 1 como acarreo*/ } if(a+b+c=3) { res=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".
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Programa de suma de dos numeros doubles, POO.
Java
|
LordKevin
|
4
|
8,273
|
15 Junio 2011, 04:06 am
por sapito169
|
|
|
Programa en C sharp que convierta binarios a decimal y decimal a binarios
.NET (C#, VB.NET, ASP)
|
david_quiroz19
|
0
|
3,390
|
13 Noviembre 2011, 00:18 am
por david_quiroz19
|
|
|
El codigo de mi programa que pasa numeros binarios a base 10
« 1 2 »
Programación C/C++
|
elkiy
|
10
|
9,510
|
29 Mayo 2013, 12:35 pm
por leosansan
|
|
|
Duda con suma de números binarios!
ASM
|
The Swash
|
0
|
2,667
|
22 Octubre 2013, 03:27 am
por The Swash
|
|
|
Programa en C que haga una resta de numero binarios...
Programación C/C++
|
thekingluisx
|
4
|
6,516
|
28 Diciembre 2013, 19:13 pm
por thekingluisx
|
|