我读了一些 Java 代码并发现了| 操作员。任何人都可以知道操作员在这种情况下正在做什么吗?for (int i=0; i<8; i++) {
x[i] = hexBytes[i*4] << 24
| hexBytes[i*4+1] << 16
| hexBytes[i*4+2] << 8
| hexBytes[i*4+3];
}
2 回答
呼啦一阵风
TA贡献1802条经验 获得超6个赞
按位OR(和AND)可用于位处理。AND允许您提取一组位:int lowest8bits = 0xFFFFF & 0xFF;.
您可以使用OR它插入位。int在上面的代码中,通过将 4 个字节移动到正确的位置并OR对其进行 ing,将它们插入到相同的内容中。
10010010 byte
10010010 00000000 << 8
00000000 00000000 00000000 00010110 The int we're building
00000000 00000000 10010010 00010110 End result in int after OR
白猪掌柜的
TA贡献1893条经验 获得超10个赞
使用的运算符有:
“<<(左移)”:二进制左移运算符。左操作数的值向左移动右操作数指定的位数。
“>>(右移)”:二进制右移运算符。左操作数的值向右移动右操作数指定的位数。
“|(按位或)”:二元或运算符复制一个位(如果任一操作数中存在该位)。
在你的代码中:
hexBytes[i*4] << 24
hexBytes[i*4] 的二进制值左移 24 位。与其他相同,结果是按位或| 操作员。
添加回答
举报
0/150
提交
取消