elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Suma y resta de números binarios en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Suma y resta de números binarios en C  (Leído 33,417 veces)
NelxoN

Desconectado Desconectado

Mensajes: 291


Java Programmer;


Ver Perfil
Suma y resta de números binarios en C
« en: 2 Noviembre 2008, 01:03 »

Buenas, tengo una duda.
Necesito hacer un programa que sume/reste números binarios.

Ya logré que transformara un numero decimal a binario, pero no tengo ni la mas minima idea de como hacer la suma/resta de binarios puesto que la suma/resta de ellos son diferentes a la suma/resta en numeros normales.

Si alguien me pudiera pasar un código fuente para guiarme, o darme una idea bien explicada, se los agradeceria.


En línea

sch3m4
Colaborador
***
Desconectado Desconectado

Mensajes: 1.606

Nihil est in intelectu quod prius not fuerit insen


Ver Perfil WWW
Re: Suma y resta de números binarios en C
« Respuesta #1 en: 2 Noviembre 2008, 01:08 »

operaciones arimeticas en binario

http://es.wikipedia.org/wiki/Operaci%C3%B3n_binaria
http://platea.pntic.mec.es/~lgonzale/tic/binarios/aritmetica.html

...

Ten en cuenta si son números con signo o sin signo, ya que hay detalles que varían


En línea

SafetyBits

"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..
NelxoN

Desconectado Desconectado

Mensajes: 291


Java Programmer;


Ver Perfil
Re: Suma y resta de números binarios en C
« Respuesta #2 en: 2 Noviembre 2008, 02:20 »

Gracias, pero cuando dije que no sabia como realizar la suma/resta de numeros binarios, me referia en C.

La teoria la tengo clara, pero no se como aplicar esa tabla en el código C. Por ejemplo, si yo escribo en C: 1+1 me dará 2, y lo que debe hacer es darme "0" y acarrear 1
« Última modificación: 2 Noviembre 2008, 02:33 por x0rT-Nuk3 » En línea

ҒrεακΠιи∂

Desconectado Desconectado

Mensajes: 184



Ver Perfil
Re: Suma y resta de números binarios en C
« Respuesta #3 en: 2 Noviembre 2008, 04:51 »

Buenas

Que es lo que sabes de programacion y programacion en C?

Salu2, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C
NelxoN

Desconectado Desconectado

Mensajes: 291


Java Programmer;


Ver Perfil
Re: Suma y resta de números binarios en C
« Respuesta #4 en: 2 Noviembre 2008, 20:39 »

Lo básico.. Ya he hecho varios programas básicos, solo necesito una idea de como hacer la suma de binarios. No te preocupes por lo que se o no se, que yo entenderé.  ;)
En línea

VirucKingX


Desconectado Desconectado

Mensajes: 540


VirucKingX


Ver Perfil
Re: Suma y resta de números binarios en C
« Respuesta #5 en: 2 Noviembre 2008, 20:55 »

por que no pasas de binario a numero, haces las operaciones + - , etc... Despues el resultado lo pasas a binario, no se solo es una idea .


Chau
En línea



Bye
AxXioma


Desconectado Desconectado

Mensajes: 796


Algunos pájaros no pueden ser enjaulados...


Ver Perfil
Re: Suma y resta de números binarios en C
« Respuesta #6 en: 2 Noviembre 2008, 21:00 »

por que no pasas de binario a numero, haces las operaciones + - , etc... Despues el resultado lo pasas a binario, no se solo es una idea .


Chau

Está muy bien la idea, pero decrementaría la velocidad de ejecución del programa. Pienso que con la ayuda que le ha dado sch3m4 podrá lograr su cometido. No es nada dificil, teniendo las ideas claras.

Saludos.
En línea





.::Cuanto mas conocimiento adquieres, más te das cuenta del que hay a tu alrededor::.
ҒrεακΠιи∂

Desconectado Desconectado

Mensajes: 184



Ver Perfil
Re: Suma y resta de números binarios en C
« Respuesta #7 en: 2 Noviembre 2008, 23:02 »

Buenas

Lo básico.. Ya he hecho varios programas básicos, solo necesito una idea de como hacer la suma de binarios. No te preocupes por lo que se o no se, que yo entenderé.  ;)
Tengo suficiente con preocuparme por mi para hacerlo por personas que no conozco ni tampoco tengo ganas de conocer ;?.

Te lo pregunte porque como bien dice Sarkis, con lo que te pasaron aqui es suficiente.


Salu2 FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C
The_Judgement

Desconectado Desconectado

Mensajes: 119


Ver Perfil
Re: Suma y resta de números binarios en C
« Respuesta #8 en: 3 Noviembre 2008, 00:01 »

Te preguntaron por los conocimientos de programación porque la pregunta que tú haces de cómo hacer que al sumar 1+1 que de 0 y ponga acarreo no debería ser más complicado que tener una variable flag llamada acarreo que esté a 1 cuando haya acarreo y a 0 cuando no y con un if comprobar si la suma es 2 para poner acarreo y dejar a 0 el resultado ahí y sumar los dos números siempre más el acarreo. No se, pero eso creo que es lo más fácil de sumar dos números en binario y no requiere más que saber de bucles y sentencias de control (lo más básico en programación).

Saludos.
En línea

Sacred Powers, cast your purifying light upon this corrupt souls, rest in peace sinners!, JUDGEMENT!!!
NelxoN

Desconectado Desconectado

Mensajes: 291


Java Programmer;


Ver Perfil
Re: Suma y resta de números binarios en C
« Respuesta #9 en: 3 Noviembre 2008, 05:20 »

Te preguntaron por los conocimientos de programación porque la pregunta que tú haces de cómo hacer que al sumar 1+1 que de 0 y ponga acarreo no debería ser más complicado que tener una variable flag llamada acarreo que esté a 1 cuando haya acarreo y a 0 cuando no y con un if comprobar si la suma es 2 para poner acarreo y dejar a 0 el resultado ahí y sumar los dos números siempre más el acarreo. No se, pero eso creo que es lo más fácil de sumar dos números en binario y no requiere más que saber de bucles y sentencias de control (lo más básico en programación).

Saludos.
Capté la idea que me diste, en el sentido de que si la suma da 2, el resultado final sea 0 y acarree 1.

Por ejemplo:

Código
  1. #include <stdio.h>
  2.  
  3. int suma=0, acarreo=0;
  4.  
  5. void mostrarResultado()
  6.    {
  7.    suma=1+1;
  8.    do
  9.    {
  10.    suma=0;
  11.    acarreo=1;
  12.    }
  13.    while(suma==2);
  14.    printf("%s %d %s %d","El total es",suma,"y el acarreo es",acarreo);
  15.    getchar();
  16.    }
  17.  
  18. main()
  19.    {
  20.    mostrarResultado();
  21.    }

Imaginando que estoy sumando el numero en forma binario 1+1, lo que hice fue crear un do while que mientras el resultado sea 2, muestre el total como 0, y guarde un 1 en la variable acarreo.

El problema lo tengo, si los numeros binarios a sumar son a partir de 2 digitos, por ejemplo 10+01.
En línea

ҒrεακΠιи∂

Desconectado Desconectado

Mensajes: 184



Ver Perfil
Re: Suma y resta de números binarios en C
« Respuesta #10 en: 3 Noviembre 2008, 10:48 »

Buenas

Yo di por sentado que con "Ya logré que transformara un numero decimal a binario" querias decir que habias logrado crear el array de ints que represente a ese numero binario. Creo que lo siguiente deberia funcionar, pero no lo probe

Código
  1. #define WSIZE 32
  2.  
  3. void bsum(int a[], int b[])
  4. {
  5.    int i = 0, carrier = 0;
  6.  
  7.    for(; i < WSIZE; ++i) {
  8.        carrier = a[i] & b[i];
  9.        a[i] |= b[i] | carrier;
  10.    }
  11. }

PD: El do-while ese ejecutara solo 1 vez ya que asignas 0 a suma
PD2: El printf lo podes hacer asi printf("El total es %d y el acarreo es%d",suma, acarreo)

Salu2, FreakMind
« Última modificación: 3 Noviembre 2008, 12:31 por ҒrεακΠιи∂ » En línea

Connoisseurs of C semantics find C++ inferior to ++C
The_Judgement

Desconectado Desconectado

Mensajes: 119


Ver Perfil
Re: Suma y resta de números binarios en C
« Respuesta #11 en: 3 Noviembre 2008, 17:19 »

Una forma más sencilla aunque menos eficiente que la que ofrece ҒrεακΠιи∂ para almacenar en un array de enteros un número almacenado en un int, es, por ejemplo:

Para obtener los millares de un número de 4 dígitos sería suficiente dividir por 1000 y quedarse con el resto, (que serían los millares).
Para obtener las centenas dividir el resultado de dividir el número por 1000 ahora por 100 y quedarse con el resto y así sucesivamente hasta que que se quede sin dígitos el número.
El gran inconveniente de éste método es que hay que conocer a priori el número máximo de dígitos del número, algo que hacerlo de forma automática no es muy sencillo.

Una vez que tienes en un array almacenado cada número, la cosa es más sencilla:

Con dos bucles for recorres los números y vas sumando en otro array con las comparaciones para el acarreo.

Si no quieres complicarte con desplazamientos y comparaciones a nivel de bit, es la única forma que conozco, pero si entiendes la forma que puso ҒrεακΠιи∂, úsala porque es muy eficiente y sencilla una vez la comprendes.

Saludos.
En línea

Sacred Powers, cast your purifying light upon this corrupt souls, rest in peace sinners!, JUDGEMENT!!!
NelxoN

Desconectado Desconectado

Mensajes: 291


Java Programmer;


Ver Perfil
Re: Suma y resta de números binarios en C
« Respuesta #12 en: 3 Noviembre 2008, 19:55 »

Código
  1. #define WSIZE 32
  2.  
  3. void bsum(int a[], int b[])
  4. {
  5.    int i = 0, carrier = 0;
  6.  
  7.    for(; i < WSIZE; ++i) {
  8.        carrier = a[i] & b[i];
  9.        a[i] |= b[i] | carrier;
  10.    }
  11. }

El tipo de variables que usas como -> a y b son llamadas o conocidas también como vectores?

Una forma más sencilla aunque menos eficiente que la que ofrece ҒrεακΠιи∂ para almacenar en un array de enteros un número almacenado en un int, es, por ejemplo:

Para obtener los millares de un número de 4 dígitos sería suficiente dividir por 1000 y quedarse con el resto, (que serían los millares).
Para obtener las centenas dividir el resultado de dividir el número por 1000 ahora por 100 y quedarse con el resto y así sucesivamente hasta que que se quede sin dígitos el número.
El gran inconveniente de éste método es que hay que conocer a priori el número máximo de dígitos del número, algo que hacerlo de forma automática no es muy sencillo.

Una vez que tienes en un array almacenado cada número, la cosa es más sencilla:

Con dos bucles for recorres los números y vas sumando en otro array con las comparaciones para el acarreo.

Si no quieres complicarte con desplazamientos y comparaciones a nivel de bit, es la única forma que conozco, pero si entiendes la forma que puso ҒrεακΠιи∂, úsala porque es muy eficiente y sencilla una vez la comprendes.

Saludos.

Muchas gracias por las recomendaciones, pero eso parece ser muy adelantado para mi, apenas estoy empezando en el lenguaje C y lo noto dificil (tal vez sea una tonteria cuando se entiende).

Salu2.
En línea

ҒrεακΠιи∂

Desconectado Desconectado

Mensajes: 184



Ver Perfil
Re: Suma y resta de números binarios en C
« Respuesta #13 en: 3 Noviembre 2008, 20:55 »

Buenas

El tipo de variables que usas como -> a y b son llamadas o conocidas también como vectores?
No. Los vectores son a y b. a[ i ] y b[ i ] son enteros


Salu2, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[c++] Suma, resta, multiplicacion y division « 1 2 »
Programación C/C++
dani__ 16 24,854 Último mensaje 6 Junio 2013, 03:08
por dorkam
[BATCH]Suma y resta números de cualquier longitud
Scripting
Binary_Death 1 776 Último mensaje 24 Julio 2012, 11:22
por BatchianoISpyxolo
Resta de binarios 1100 - 11 es 1001?
Electrónica
Synth3tik0 3 1,609 Último mensaje 18 Septiembre 2012, 17:15
por $Edu$
Duda con suma de números binarios!
ASM
The Swash 0 371 Último mensaje 22 Octubre 2013, 03:27
por The Swash
Programa en C que haga una resta de numero binarios...
Programación C/C++
thekingluisx 4 495 Último mensaje 28 Diciembre 2013, 19:13
por thekingluisx
Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines