problema con sobre escritura de métodos

Iniciado por m@o_614, 24 Enero 2015, 03:15 AM

0 Miembros y 1 Visitante están viendo este tema.

m@o_614

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 (java) [Seleccionar]
public class OperadoresBits
{
public static void main(String[] args)
{
int valor = 0x80;
short x = 0x80;
byte y = 0x80;
System.out.println("Bits en la RAM\n");
memoriaRAM(valor);
}

public static void memoriaRAM(byte valor)
{
int i,bits;
bits = 8;
char binario[] = new char[bits];
System.out.println("Pasando el valor byte " + valor + ":");
for(i = bits-1;i >= 0;i--)
{
if((valor&1) == 1)
   binario[i] = '1';
else if((valor&1) == 0)
   binario[i] = '0';
valor >>= 1;
}
imprimirArreglo(binario);
}

public static void memoriaRAM(int valor)
{
int i,bits;
bits = 32;
char binario[] = new char[bits];
System.out.println("Pasando el valor int " + valor + ":");
for(i = bits-1;i >= 0;i--)
{
if((valor&1) == 1)
   binario[i] = '1';
else if((valor&1) == 0)
   binario[i] = '0';
valor >>= 1;
}
imprimirArreglo(binario);
}

public static void memoriaRAM(short valor)
{
int i,bits;
bits = 16;
char binario[] = new char[bits];
System.out.println("Pasando el valor short " + valor + ":");
for(i = bits-1;i >= 0;i--)
{
if((valor&1) == 1)
   binario[i] = '1';
else if((valor&1) == 0)
   binario[i] = '0';
valor >>= 1;
}
imprimirArreglo(binario);
}

public static void imprimirArreglo(char binario[]){
int bits = 0,i;
final int BITS = 8;
for(i = 0;i < binario.length;i++)
{
    System.out.print(""+binario[i]);
    bits++;
    if(bits == BITS)
    {
    System.out.print(" | ");
    bits = 0;
    }
}
}
}


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






Usuario Invitado

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.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein