ayuda con algoritmo en c#

Temas de Algoritmos, Estructuras de Datos, en general

ayuda con algoritmo en c#

Notapor juanegt_7 » Mié Ago 22, 2007 4:29 pm

quien me puede ayudar con el algoritmo para pasar numeros decimales a binario,octal y hexadecimal y viceverza por favorrrr muchas gracias :wink:
juanegt_7
Novato
Novato
 
Mensajes: 1
Registrado: Mar Ago 21, 2007 3:06 pm


Re: ayuda con algoritmo en c#

Notapor yalmar » Sab Sep 29, 2007 2:40 pm

ve en http://www.codeproject.com/csharp/numberconvert.asp

hay otros tambien, es solo buscar

salu2
Avatar de Usuario
yalmar
Colaborador
Colaborador
 
Mensajes: 264
Registrado: Mié Jun 09, 2004 4:14 pm
Ubicación: Brasil


Re: ayuda con algoritmo en c#

Notapor andresprimo » Jue Jun 16, 2011 4:44 pm

Hola.

Aclaro que una vez convertido a binario, lo pasas a octal agrupando de a 3 bits empezando siempre desde el bit de menor peso (llamado bit cero o de paridad). Para pasarlo a hexadecimal, los agrupas de 4 en 4 (4 bits = 1 nibble).

Para convertir a binario es mas simple de lo que pensas.
Con el numero en la mano, preguntas si es par. De ser asi, su bit de menor peso de 0. En caso contrario es 1.
Guardas ese bit en un string que va recolectando los bits que encuentras.
Ahora viene el truco importante. Hay que eliminar ese bit verificado de menor peso, y correr todos los demas de manera que el nuevo bit de menor peso sea el siguiente. Eso se logra con la operacion SHR (shift-right, o corrimiento a la derecha). En C++ me parece que es dato >> cant-bits. Los dos signos de mayor indica el SHR. Aqui tenes que hacer numero >> 1 porque desplazamos 1 bit a la derecha. Una vez hecho esto, preguntamos si es par o impar y obtenemos el valor del siguiente bit en el numero. Lo guardamos en el string a continuacion de los bits ya guardados. Volvemos a desplazar 1 bit a la derecha y volvemos a preguntar por su paridad. Todo esto se repite hasta que se agotaron todos los bits del numero en cuestion.

Simple no?.

Veamos como hacemos con el paso a octal.
Tomamos el string y sacamos los 3 bits de menor peso en un substring. Aclaro que el 1er caracter del substring es el bit de menor peso en el ejemplo de codigo que doy. En "011" el bit de menor peso es el 0.

Luego hacemos las comparaciones con IFs.
IF Substring = "000" then DigitoOctal=0
IF Substring = "100" then DigitoOctal=1
IF Substring = "010" then DigitoOctal=2
IF Substring = "110" then DigitoOctal=3
IF Substring = "001" then DigitoOctal=4
IF Substring = "101" then DigitoOctal=5
IF Substring = "011" then DigitoOctal=6
IF Substring = "111" then DigitoOctal=7

Pasamos al siguiente grupo de 3 bits en el string binario y volvemos a verificar con los IFs generando el siguiente digito octal, siempre desde el menor peso hacia el mayor peso. Si la cantidad de bits no es multiplo exacto de 3, el resto se rellena con ceros.

Con hexadecimal es lo mismo, solo que de 4 en 4 y con mas IFs porque son 16 casos, desde el 0 al 15. Ademas, el digito hexadecimal empieza a ser letra a partir del 10, donde corresponde la letra A, y la letra F para el 15.

Finalmente mostras la cadena resultado por pantalla que has generado.

Espero haber sido claro con el metodo.


ANDRES.-
andresprimo
Novato
Novato
 
Mensajes: 4
Registrado: Jue Jun 16, 2011 10:18 am


    

Volver a Algoritmos y Estructuras de Datos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados