我有两个uint32的变量。
这些值如下-

uint32_t a = 0x00002000;
uint32_t b = 0x00c00000;

我希望这两个变量合并,这样它们就可以得到0000200c的结果。
如果我只是a+b,它不会返回正确的结果。有人能帮忙吗?
编辑-我需要把b的位号31-20改为a的位号11-0。

最佳答案

b的位31-20可以通过执行(b & 0xFFF00000)来隔离。
a的位11-0可以通过执行(a & 0x00000FFF)来隔离。
然后需要将b变量向右移动20位,然后再将其与a组合。把这些放在一起,你就会

uint32_t answer = ((b & 0xFFF00000) >> 20) | (a & 0x00000FFF);

10-06 12:43