合并十六进制值中的位
Merge bits from hex value
我有两个 uint32_t 变量。
这些具有以下值 -
uint32_t a = 0x00002000;
uint32_t b = 0x00c00000;
我想合并这两个变量,以便它们给出结果 0000200c
。
如果我只是 a+b
,它不会 return 正确的结果。有人可以帮忙吗?
编辑 - 我需要将 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);
我有两个 uint32_t 变量。 这些具有以下值 -
uint32_t a = 0x00002000;
uint32_t b = 0x00c00000;
我想合并这两个变量,以便它们给出结果 0000200c
。
如果我只是 a+b
,它不会 return 正确的结果。有人可以帮忙吗?
编辑 - 我需要将 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);