Foro de elhacker.net

Programación => Java => Mensaje iniciado por: m@o_614 en 24 Enero 2015, 03:15 am



Título: problema con sobre escritura de métodos
Publicado por: m@o_614 en 24 Enero 2015, 03:15 am
Saludos

Tengo el siguiente código en el cuál tengo que declarar una variable  que puede ser de tipo int, byte o short, a esta variable le voy a asignar un numero en notacion hexadecimal, y después tengo una función llamada memoriaRAM() que lo va a convertir en binario. Yo en el código no tengo uno sino 3 métodos memoriaRAM() a uno le paso como parametros el valor cuando es tipo int, a otro cuando es short, y al ultimo cuando es de tipo byte.

Código
  1. public class OperadoresBits
  2. {
  3. public static void main(String[] args)
  4. {
  5. int valor = 0x80;
  6. short x = 0x80;
  7. byte y = 0x80;
  8. System.out.println("Bits en la RAM\n");
  9. memoriaRAM(valor);
  10. }
  11.  
  12. public static void memoriaRAM(byte valor)
  13. {
  14. int i,bits;
  15. bits = 8;
  16. char binario[] = new char[bits];
  17. System.out.println("Pasando el valor byte " + valor + ":");
  18. for(i = bits-1;i >= 0;i--)
  19. {
  20. if((valor&1) == 1)
  21.   binario[i] = '1';
  22. else if((valor&1) == 0)
  23.   binario[i] = '0';
  24. valor >>= 1;
  25. }
  26. imprimirArreglo(binario);
  27. }
  28.  
  29. public static void memoriaRAM(int valor)
  30. {
  31. int i,bits;
  32. bits = 32;
  33. char binario[] = new char[bits];
  34. System.out.println("Pasando el valor int " + valor + ":");
  35. for(i = bits-1;i >= 0;i--)
  36. {
  37. if((valor&1) == 1)
  38.   binario[i] = '1';
  39. else if((valor&1) == 0)
  40.   binario[i] = '0';
  41. valor >>= 1;
  42. }
  43. imprimirArreglo(binario);
  44. }
  45.  
  46. public static void memoriaRAM(short valor)
  47. {
  48. int i,bits;
  49. bits = 16;
  50. char binario[] = new char[bits];
  51. System.out.println("Pasando el valor short " + valor + ":");
  52. for(i = bits-1;i >= 0;i--)
  53. {
  54. if((valor&1) == 1)
  55.   binario[i] = '1';
  56. else if((valor&1) == 0)
  57.   binario[i] = '0';
  58. valor >>= 1;
  59. }
  60. imprimirArreglo(binario);
  61. }
  62.  
  63. public static void imprimirArreglo(char binario[]){
  64. int bits = 0,i;
  65. final int BITS = 8;
  66. for(i = 0;i < binario.length;i++)
  67. {
  68.    System.out.print(""+binario[i]);
  69.    bits++;
  70.    if(bits == BITS)
  71.    {
  72.     System.out.print(" | ");
  73.     bits = 0;
  74.    }
  75. }
  76. }
  77. }
  78.  

estoy probando el programa cuando a la variable le asigno el valor 128, en hexadecimal sería:

valor = 0x80

para el tipo int y short funciona perfecto e imprime el binario correctamente, pero para el byte desde el momento en que le asigno el valor 0x80 a la variable valor, me marca un error y no entiendo por qué no puedo hacer esto:

byte valor = 0x80;

de antemano gracias







Título: Re: problema con sobre escritura de métodos
Publicado por: Usuario Invitado en 24 Enero 2015, 03:42 am
Byte almacena valores entre -128 y 127. Si intentas guardar 128 en un Byte, te va a dar un error de out of range.


PD: ¿Tu otro tema se resolvió? Si es así, márcalo con el check verde y edita el título como [Resuelto] Nombre del post.