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
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
O tipo primitivo int tem 4 bytes ou 32 bits.
Com ele você consegue representar os números de -2147483648 até 2147483647.
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.

Nao acredito … você é uma raridade, poucos tem esse conhecimento.
Vou estudar a resposta muito obrigado