I initialized a byte as follows:
byte b = (byte) 0b11110000000;
Since a byte is 8 bits of size, I was expecting that it would throw some exception or error, since this number should be assignable only to a short or above. Still it evaluated to -124? Or is this perhaps the "normal" behavior? (no exception thrown, but variable is overflown)?
You should be getting -128.
When you explicitly cast an int to byte, the lowest 8 bits are taken, and the rest are discarded.
In your example the lowest 8 bits are 10000000, and the decimal value of that number is -128.
Without the explicit cast, the code won't pass compilation, since your assignment causes a loss of information.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With