在这个位移操作中做了什么?

时间:2009-10-14 14:23:28

标签: c++ bit-manipulation

(INBuffer[3] << 8) + INBuffer[2]

这是否真的将INBuffer [3]中的位移入INBuffer [2]或[3]被归零然后加到[2]?

2 个答案:

答案 0 :(得分:10)

这是从两个8位值生成16位值的简单方法。

INBuffer[3] = 0b01001011;
INBuffer[2] = 0b00001001;

INBuffer[3]<<8 // 0b0100101100000000;
(INBuffer[3]<<8) + INBuffer[2] // 0b0100101100001001

通常将其表示为

(INBuffer[3]<<8) | INBuffer[2];

答案 1 :(得分:6)

根据语言最有可能计算

InBuffer[3] * 256 + InBuffer[2]

或(根据语言很可能相同)执行将两个字节打包成一个16位字。