conversão de short para byte deu como resultado -1

1 resposta
E

Olá

tentei fazer um cast de variáveis primitivas e pensei que a variável "b"
fosse receber o valor 127(imaginei que o resultado fosse truncado para o máximo que a variável byte pudesse suportar), mas ela recebeu o valor ‘-1’. Fiz a conversão do valor da variável short(32767) para binário e com o resultado obtido fiquei mais confuso ainda


public static void main(String[] args) {

final short s =32767;

byte b = (byte)s;

System.out.println(b);

}

O resultado foi " -1 "
não entendi

Converti a variável short, 32767, para binário e obtive o seguinte resultado: 111.1111.1111.1111

a variável short trabalha com inteiros de 16 bits, então, de acordo com o valor obtido, está faltando um bit. Eu imagino que esse bit que está faltando é para valores negativos

Não era para a variável byte receber o valor ‘-128’ ?

1 Resposta

M

Ola!
Java trabalha com complemento de 2.
http://gec.di.uminho.pt/micei/ac/Repr_Numeros.pdf

short (8 bits) , no teu caso seria 1111.1111, sendo que o primeiro bit a esquerda representa o sinal (complemento de dois).
Para encontrar a resposta, tu deve inverter todos os bits que representa o valor 111.1111 (o primeiro bit NÃO representa valor) e inverter o mesmo 000.000, depois adicionar uma unidade 000.0001.
Então retorna o sinal 1000.0001, já que o primeiro digito representa o sinal e os demais os valor teremos: -1

Abraços…

Criado 5 de setembro de 2007
Ultima resposta 23 de nov. de 2007
Respostas 1
Participantes 2