Vous êtes sur la page 1sur 5

ertir de decimal a hexadecimal en Java ________________________________________________________________________________ _____ Este programa recibe un nmero entero decimal y lo convierte a notacin hexadecimal.

Hacer esta conversin es relativamente fcil. En el programa se incluyen comentario s de documentacin. Una introduccin a los nmeros hexadecimales aparece en Esta entra da. Una tabla de equivalencias entre nmeros en notacin decimal, binario, octal y h exadecimal, aparece en sta pgina ________________________________________________________________________________ _____ Este cdigo debe guardarse con el nombre UsaConvertirHexadecimal.java import java.util.Scanner; public class UsaConvertirHexadecimal { // Abre clase UsaConvertirHexadecimal

public static void main( String args[]) { // Abre main System.out.print("\nEste programa convierte de decimal a "); System.out.print("hexadecimal. \n"); Scanner entrada = new Scanner(System.in); ConvertirHexadecimal miObjeto = new ConvertirHexadecimal(); int numero; System.out.print("\nPor favor introduzca un numero "); System.out.println("y se imprimira su equivalente en Hexadecimal: "); numero = entrada.nextInt(); miObjeto.Hexadecimal( numero ); } } // Cierra main // Cierra clase UsaConvertir

El siguiente cdigo debe guardarse con el nombre ConvertirHexadecimal.java public class ConvertirHexadecimal { // Abre clase ConvertirHexadecimal // La variable Tamano controla el numero de // simbolos que se requieren para hacer la conversion // Para llevar un registro de los simbolos se usa un // arreglo. Estos se deben guardar porque se van generando // de derecha a izquierda, pero la impresion es de // izquierda a derecha. private int Tamano = 35; private int[] a = new int[Tamano]; ///////////////////////////// // METODO HEXADECIMAL ///////////////////////////// public void Hexadecimal ( int x ) { // Abre metodo Hexadecimal // El arreglo se llena con 0

for ( int i = 0; i < Tamano; i++ ) { // Abre for a[i] = 0; } // Cierra for System.out.print("\nAqui esta el numero en notacion "); System.out.println("hexadecimal: "); int contador = 0; while ( 0 != x ) { // Abre while // Si el numero no es multiplo de 16 // lo cual es lo mas probable (por eso // se coloca primero esta condicion) if ( 0 != x % 16 ) { // Abre if // Se imprime el residuo de la division //Imprimir( x % 16 ); a[contador++] = x % 16; // Ahora x es x - residuo x -= x % 16; // Ahora se divide x entre 16 x /= 16; } // Cierra if // De lo contrario // Esto es, si x es multiplo de 16 else { // Abre else // System.out.print("0"); a[contador++] = 0; //Ahora x es x/16 x /= 16; } // Cierra else } // Cierra while System.out.println("\n"); // El numero en notacion hexadecimal, que se ha // guardado en el arreglo a se manda a imprimir Imprimir(); } // Cierra metodo Hexadecimal /////////////////////////////////// //METODO IMPRIMIR /////////////////////////////////// public void Imprimir( ) { // Abre metodo Imprimir // El arreglo se imprime de la ultima posicion // a la primera. Sin embargo, es muy probable // que las ultimas sean 0. Como estan a la derecha // no es necesario imprimirlos. La variable estatus // inicia con "afuera", lo cual indica que los ceros // no deben imprimirse String estatus = "afuera"; for ( int i = Tamano - 1; i >= 0; i-- ) switch ( a[i] ) { // Abre switch case 0: if ( "adentro" == estatus ) System.out.printf("0");

break; case 1: System.out.printf("1"); estatus = "adentro"; break; case 2: System.out.printf("2"); estatus = "adentro"; break; case 3: System.out.printf("3"); estatus = "adentro"; break; case 4: System.out.printf("4"); estatus = "adentro"; break; case 5: System.out.printf("5"); estatus = "adentro"; break; case 6: System.out.printf("6"); estatus = "adentro"; break; case 7: System.out.printf("7"); estatus = "adentro"; break; case 8: System.out.printf("8"); estatus = "adentro"; break; case 9: System.out.printf("9"); estatus = "adentro"; break; case 10: System.out.printf("A"); estatus = "adentro"; break; case 11: System.out.printf("B"); estatus = "adentro"; break; case 12: System.out.printf("C"); estatus = "adentro"; break; case 13: System.out.printf("D"); estatus = "adentro"; break; case 14: System.out.printf("E"); estatus = "adentro"; break; case 15: System.out.printf("F"); estatus = "adentro";

break; default: System.out.printf("ERROR. EL PROGRAMA ESTA MAL"); break; } // Cierra switch // Es probable que se haya introducido el numero 0 // y en este caso la variable estatus permanecio // como "afuera" y no se imprimio el 0. if ( "afuera" == estatus ) System.out.printf("0"); System.out.println("\n"); } // Cierra metodo Imprimir } // Cierra clase Convertir

aber si te sirve este, #include <stdio.h> main() { int base, suma, num, op, res, i, k; base = 1; suma = 0; printf("Seleccione la opcion que desea ejecutar:\n\t1-Convertir Decimal a " "Binario\n\t2-Convertir Decimal a Octal\n\t" "3-Convertir Decimal a Hexadecimal\n"); scanf("%d", &op); printf("Ingresa un numero:\n\t"); scanf("%d", &num); switch (op) { case 1: while(num >= 1) {//inicio while binarios res = num % 2; num = num / 2; suma = suma + res * base; base = base * 10; }//fin while (binarios) printf("El numero binario es:\t%d\n", suma); break; case 2: do {//inicio while octales res = num % 8; num = num / 8; suma = suma + res * base; base = base * 10; } while(num > 0);//fin while (octales) printf("El numero octal es:\t%d\n", suma); break; case 3: do {//inicio while hexadecimales

res = num % 16; num = num / 16; suma = suma + res * base; //base = base * 10; }while (num > 01);//fin while (hexadecimales) printf("El numero Hexadecimal es: \t%x\n", suma); break; } } suerte amigo Asker's rating & comment 3 out of 5 no es exactamente lo que buscaba pero bueno tenia que elejir una. ya me ayudaron por otro lado. en fin gracias a vosotros dos por su ayuda.!! Rate Comment Other Answers (1) vincegeratorix answered 8 month ago para convertir de base 10 a base 16 sigue los siguientes pasos: divide el nmero en 16 y scale el resto. El resto ser el dgito menos significativo. Repite el proceso hasta que el nmero sea igual a 0. y vas poniendo los nmeros en o rden. En c++ tendras que trabajar con strings y ah guardando el "nmero" que te salga. algo en pseudocdigo sera como: char[100] hex; int longitud=0; leer numero while(numero>0) { resto = numero %16 numero = (int)(numero/16) char num_hex switch(resto) { case 1: num_hex="1" case 2: num_hex="2" ... case 10: num_hex="A" case 11: num_hex="B" ... case 16: num_hex="F" default : printf("esto nunca se alcanza, si llegas a esto es que hay un error" } hex[longitud]=num_hex longitud++; } luego inviertes "hex", la cadena de carcteres con el nmero. Para eso haces algo co mo: char[100] temporal; int j=0; for(int i=longitud; i<=0;i--) { temporal[j]=hex[i] j++; } Algo as ira, ah lo arreglas.

Vous aimerez peut-être aussi