I am trying to perform a bitwise or on a byte
value I have in Java.
For example, I am running:
byte b = (byte)0b11111111;
int result = 0 | b;
My expected result for this would be 0b00000000 00000000 00000000 11111111
, or 255
. However, I am receiving -1
, or 0b11111111 11111111 11111111 11111111
.
I'm assuming that Java converts my byte
into an int
via sign extension before performing the operation, and I was just curious if there was a way to get my desired result without using a bit mask (0b11111111
).
Using a bit mask is the standard solution to disable sign extension when converting a byte
to an int
. You'll just have to accept this slice of Java ugliness.
int result = 0 | (b & 0xFF);
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