这两个按位运算符在做什么?
What are these two bitwise operators doing?
有人介意解释以下表达式的作用吗?
int someValue = (((buffer[position + 1] << 8) | buffer[position] & 0xff) << 16)
我知道 buffer[position + 1] << 8 向左移动 8 位,而 buffer[position] & 0xff 基本上是提取这 8 位,但是 [=15= 的作用是什么? ] (|) 为什么整个东西向左移动 16 位?他们被抹杀了吗?提前致谢。
基本上这是将两个字节转换为一个 16 位整数。这两个字节在 buffer[position] 和 buffer[position + 1].
首先,位置+1的字节左移8位。其次,第一个字节的高位被清除。
然后将两个字节用按位或运算符组合。
然后这个数字到目前为止被左移 16 位,大概是为了将另外 2 个字节放入这个整数的低位部分。
有人介意解释以下表达式的作用吗?
int someValue = (((buffer[position + 1] << 8) | buffer[position] & 0xff) << 16)
我知道 buffer[position + 1] << 8 向左移动 8 位,而 buffer[position] & 0xff 基本上是提取这 8 位,但是 [=15= 的作用是什么? ] (|) 为什么整个东西向左移动 16 位?他们被抹杀了吗?提前致谢。
基本上这是将两个字节转换为一个 16 位整数。这两个字节在 buffer[position] 和 buffer[position + 1].
首先,位置+1的字节左移8位。其次,第一个字节的高位被清除。
然后将两个字节用按位或运算符组合。
然后这个数字到目前为止被左移 16 位,大概是为了将另外 2 个字节放入这个整数的低位部分。