5

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).

brandonsbarber
  • 384
  • 1
  • 3
  • 11

1 Answers1

7

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);
John Kugelman
  • 349,597
  • 67
  • 533
  • 578