c - 从 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 位地址中可以拥有的位数将它们拆分,然后将所有内容伪造/合并到整个地址中。
解决方案
根据@user3386109 回答:
address = (outer << 22) | (inner << 12) | offset;
推荐阅读
- asp.net - 无法在命名空间中引用其中的类库 ado.net 实体数据模型 .edmx 在 asp.net Web 应用程序 webapi
- javascript - 通过单击另一个按钮来触发 JavaScript 按钮
- ios - 将完整的编程自定义视图添加到 ViewController。自动布局问题
- python - 400 错误请求:KeyError:“文件”
- python - 如何通过 selenium 仅针对 Python 中的当前 Chrome 会话按下键盘按钮
- chocolatey - Chocolatey 问题 - 创建 Powershell 脚本的 zip 包?
- python - 如何将 PDF 转换为 opencv-python 可读的图像?
- node.js - Telegram 机器人可以在单个消息触发器上返回多条消息吗?
- javascript - 我正在尝试编写一个程序,其中球忽略击中绿色障碍,但当红色障碍表示游戏结束时结束游戏
- regex - 提取斜线之间的字符串,但第二个斜线可能不存在