[C con Clase] Hola a todos - Ayuda con operaciones con binarios

David Gonzalez H. davidgh en etb.net.co
Dom Mar 18 09:15:47 CET 2007


Hello Steven,

Sunday, March 18, 2007, 1:21:53 AM, you wrote:

> Hola David,

> El pasado 2007-03-18 03:03:33, David Gonzalez escribió:

DG>> Hola!.
DG>> Este curso me ha servido montones, no solo ajora para la carrera sino desde 
DG>> antes cuando era mas autodidacta, y los felicito, no lo veia hace rato y lo 
DG>> encuentro significativamente mas grande y completo.

> Nos alegra saber que seguimos siendo de ayuda.

Si aunque no suene mucho, lo son sobre todo para medio novatos como yo
que estan perdidos en el embrollozo mundo de la programación.

DG>> Mi nombre es David, soy estudiante de I semestre de Ing. de Sistemas en 
....
DG>> binario.

> Supongo que con "binario" te refieres al sistema de numeración. Si
> esto es así, entonces tenemos que aclarar un matiz importante. Una
> cosa es el valor numérico y otra cosa es su representación. Por ejemplo,

> 5, cinco, V, cinque, five, ....., 101, 12, etcétera

Si basicamente.


> Dicho esto, no podemos validar los valores, pero sí sus
> representaciones. Recuerda que a nivel de hardware, todo es tratado
> en código binario. En C/C++, se puede escribir programas usando
> distintas representaciones, pero al final todo estará en binario. Por ejemplo,

> void mostrar( int num );

> int main()
> {
>   mostrar( 0x3C );
>   mostrar( 15 );
>   ...
> }

> Cuando lleguemos a 'mostrar()', sólo obtenemos los valores, sin
> representación. Lo que sí podemos hacer es tratar los valores con operadores a nivel de bits.

> Por consiguiente, al leer un número, realmente estamos leyendo
> caracteres que representan un valor numérico. Puedes usar la función estándar 'strtol()'. Por ejemplo,
> char szNumero[] = "101010011";
> char *finalPtr;

La idea del ejercicio que me plantean ess basicamente esto.

3. Pedir un numero al usuario.
2. Usando modulo (%) y algo que no tengo aun muy claro, validar que el
usuario haya escrito 1s y 0s, sin mostrar mensaje de error
3. SI lo anterior es binario hacer las operaciones +, -, * y / con
esos numeros.
4. Mostrar el resultado en binario.

> long num = strtol( szNumero, &finalPtr, 2 );

> Para la salida, me temo que no existe una función estándar que haga
> la tarea inversa de 'strtol()'. Pero tampoco es una gran pérdida,
> especialmente al convertir a binario. Puedes usar los operadores a
> nivel de bit para ir tomando cada bit de uno en uno en un bucle.


> Espero que esto te oriente.

Claro que me despeja muchas dudas en mi cabeza, por eso si fuera
posible que me dierasn seudocodigo y alguna luz para crear las
funciones sera super.

Miles de gracias intentaré usar el concepto pero aún sigo como
perdido.

-- 
Best regards,
 David                            mailto:davidgh en etb.net.co




Más información sobre la lista de distribución Cconclase