我有两个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);