我继承了一些代码,但无法理解其中的一部分:
byte[] b = new byte[4] { 3, 2, 5, 7 };
int c = (b[0] & 0x7f) << 24 | b[1] << 16 | b[2] << 8 | b[3];
有人能告诉我这里发生了什么吗?
我继承了一些代码,但无法理解其中的一部分:
byte[] b = new byte[4] { 3, 2, 5, 7 };
int c = (b[0] & 0x7f) << 24 | b[1] << 16 | b[2] << 8 | b[3];
我已经有一会儿没有做比特运算了,所以...为了好玩:
[额外的括号表示操作顺序]
((b[0] & 0x7f) << 24) | (b[1] << 16) | (b[2] << 8) | b[3]
(b[0] & 0x7f) << 24 = 11 0000 0000 0000 0000 0000 0000
b[1] << 16 = . . . . . . . . . . 10 0000 0000 0000 0000
b[2] << 8 = . . . . . . . . . . . . . . . 101 0000 0000
b[3] = . . . . . . . . . . . . . . . 0111
0011 0000 0010 0000 0101 0000 0111 = 50,464,007