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