首页 > 解决方案 > 从 C 中的多个值创建地址

问题描述

我试图通过组合我拥有的多个 unsigned int 值在 C 中创建 32 位地址。这些多个值很重要,需要全部存储到 1 个 32 位地址中。

例如:假设我有unsigned int outer = 25, unsigned int inner = 984, unsigned int offset = 3241。外层 int 有 32 位地址的高 10 位,内层 int 有 32 位地址中的 10 位,偏移量有剩余的 12 位来存储它的编号。

它看起来像:

OUTER | INNER | OFFSET
  10      10      12    = 32 bit address

我知道,在这个例子中,外部和内部整数可以存储 0 - 2^10-1 的值,偏移量可以存储 0 - 2^12-1 的值,但是对于这些值,我不确定如何根据它们在 32 位地址中可以拥有的位数将它们拆分,然后将所有内容伪造/合并到整个地址中。

标签: cbit-manipulationbit

解决方案


根据@user3386109 回答:

address = (outer << 22) | (inner << 12) | offset;

推荐阅读