bra*_*ber 5 java binary bit-manipulation twos-complement sign-extension
我试图byte在Java中执行按位或值.
例如,我正在运行:
byte b = (byte)0b11111111;
int result = 0 | b;
Run Code Online (Sandbox Code Playgroud)
我的预期结果是0b00000000 00000000 00000000 11111111,或255.但是,我收到了-1,或者0b11111111 11111111 11111111 11111111.
我假设Java 在执行操作之前将我byte转换为intvia符号扩展名,我只是好奇是否有办法在不使用位掩码(0b11111111)的情况下获得我想要的结果.
使用一个位掩码是标准溶液转换时禁用符号扩展byte到一个int.你只需要接受这片Java丑陋.
int result = 0 | (b & 0xFF);
Run Code Online (Sandbox Code Playgroud)