使用 int 的位表示进行操作

Manipulating with bit representation of int

我有一些 intshort 这样的:

int a = //...
short b = //..

使用以下位表示法制作 int c 的最快方法是什么:

也许按位 OR 会在这里有所帮助,但仍然不知道如何。

例如:

a = 01010101 01010101 01010101 01010101
b =          11111111 11111111

然后我们有

c = 01010101 11111111 11111111 01010101

删除那些字节中原来的内容,然后放入 b:

c = (a & 0xFF0000FF) | ((b << 8) & 0x00FFFF00);

移位后的额外 & 是为了抵消符号扩展,否则只要 b 为负,符号扩展就会用 1 覆盖最高字节。