(byte) (4 << 4) | 5
这会将值4左移,然后将低4位设置为值5。
00000100
值(4
)01000000
左移4位(<< 4
)后00000101
另一个值(5
)01000101``|
#2和#3 的按位OR()的结果
由于操作数是
int类型(即使它们是
byte值,即使
int操作员喜欢
|对它们进行操作,它们也会被提升为类型),因此最终结果需要强制转换存储在中
byte。
如果
byte在任何按位运算中将值用作操作数,则对的隐式转换
int会导致意外的结果。如果要将a
byte视为在该转换中未签名,请使用按位AND(
&):
byte b = -128; // The byte value 0x80, -128dint uint8 = b & 0xFF; // The int value 0x00000080, 128dint i = b; // The int value 0xFFFFFF80, -128dint uintr = (b & 0xFF) | 0x04; // 0x00000084int sintr = b | 0x04; // 0xFFFFFF84



