gpt4 book ai didi

c - 我是否使用位移正确地提取了这些字段? (标签、索引、偏移量)

转载 作者:太空宇宙 更新时间:2023-11-04 03:03:50 49 4
gpt4 key购买 nike

我正在用 C 构建一个 CPU 缓存模拟器。我希望你能告诉我我是否正确提取了这些字段:

32 位地址 应按如下方式拆分:

+---------------------------------------------------+
| tag (20 bits) | index (10 bits) | offset (2 bits) |
+---------------------------------------------------+

这是我获取每个值的代码:

void extract_fields(unsigned int address){

unsigned int tag, index, offset;

// Extract tag
tag = address >> 12;

// Extract index
index = address << 20;
index = index >> 22;

// Extract offset
offset = address << 30;
offset = offset >> 30;

}

非常感谢任何建议!

最佳答案

看起来您的解决方案可行,但通常以不同的方式完成,可能更清晰一些。

以你的例子为例:

// Shift off the lowest 12 bits, and mask off the higher ones
tag = (address >> 12) & 0xFFFFF;

// Shift off the lowest 2 bits, and mask off the higher ones
index = (address >> 2) & 0x3FF;

// Shift off the lowest 0 bits, and mask off the higher ones
offset = (address >> 0) & 0x3;

关于c - 我是否使用位移正确地提取了这些字段? (标签、索引、偏移量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8145346/

49 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com