问题描述
如果我有一个名为 n 的 16 位数字和另一个名为 n2 的 16 位数字,并且我想将 n2 的前 8 位设置为 n。只有 n 的前 8 位应与 n2 相同,其余 8 位不应改变。遇到这种情况我该怎么办?我尝试将数字移位 8,但我不知道如何提取 n 的 MSB 并将其设置为 n2 的 MSB,然后再移位。
有人可以帮我吗?
谢谢!
解决方法
您可以将 n2 的前 8 位归零,然后将 n 的前 8 位归零:
n2 &= 0xFF00;
n2 |= (n & 0x00FF);
编辑 Eric Postpischil 注释,以下代码将 n2 的最高有效字节更改为 n 的最高有效字节。
n2 &= 0x00FF;
n2 |= (n & 0xFF00);