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.
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
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.