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
public class OperadoresBits { { int valor = 0x80; short x = 0x80; byte y = 0x80; memoriaRAM(valor); } public static void memoriaRAM(byte valor) { int i,bits; bits = 8; char binario[] = new char[bits]; 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]; 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]; 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++) { bits++; if(bits == BITS) { 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