我有两个 uint32_t 变量。 这些具有以下值 -
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);
关于c - 合并十六进制值中的位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33430260/