Java Bitwise或Byte和Int之间

时间:2015-01-28 22:13:10

标签: java binary bit-manipulation twos-complement sign-extension

我正在尝试使用Java中的按位或byte值。

例如,我正在运行:

byte b = (byte)0b11111111;
int result = 0 | b;

我的预期结果是0b00000000 00000000 00000000 11111111255。但是,我收到了-10b11111111 11111111 11111111 11111111

我假设Java在执行操作之前将byte转换为int通过符号扩展名,我很好奇是否有办法在不使用的情况下获得所需的结果位掩码(0b11111111)。

1 个答案:

答案 0 :(得分:7)

使用位掩码是在将byte转换为int时禁用符号扩展的标准解决方案。你只需要接受这片Java丑陋。

int result = 0 | (b & 0xFF);