Casting int para short

2 respostas
certificacoesjava
A

Bom dia, gostaria de saber se alguém sabe explixar porque o resultado deste casting dá : 20678

short y = (short)1921222;

Muito obrigado a todos

2 Respostas

S

O tipo primitivo int tem 4 bytes ou 32 bits.
Com ele você consegue representar os números de -[telefone removido] até [telefone removido].

O tipo primitivo short tem 2 bytes ou 16 bits.
Com ele você consegue representar os números de -32768 até 32767.

Veja quais são os 4 bytes que compõe o número int 1921222:

00000000 00011101 01010000 11000110  (int)
 byte 4   byte 3   byte 2   byte 1

Quando você faz um cast de int pra short, você está perdendo o byte 3 e o byte 4 do número int, ficando somente com o 2 bytes abaixo:

-------- -------- 01010000 11000110  (short)
                   byte 2   byte 1

Se você converter 0101000011000110 para decimal, vai obter o número 20678.
:slight_smile:

A

Nao acredito … você é uma raridade, poucos tem esse conhecimento.

Vou estudar a resposta muito obrigado

Criado 6 de maio de 2019
Ultima resposta 6 de mai. de 2019
Respostas 2
Participantes 2