[英]Separating a 32 bit address into parts
在 C 中,如果我有一个 32 位二进制地址,我如何获取位 6 - 10(5 位值)并将它们分配给一个新变量? 例如地址:00000001001010011000100100100011
我想参加这个部分:
0000000100101001100010 01001 00011
并将其存储在变量 x 中。
如果我有一个 32 位二进制地址,我怎么能取 6 - 10 位(5 位值)
地址实际上并不是在特定位中具有算术值的东西 - 这非常依赖于实现。 代码可以将地址转换为 integer 类型,然后继续。
OP 显然想要其他@paddy bits: 9 to 5 。
#include <stdint.h>
void *ptr = ....;
uintptr_t i = (uintptr_t) ptr;
// v------v Ignore 5 least significant bits, move all bits right by 5.
unsigned x = (i >> 5) & 0x1F;
// ^--^ Mask: Only retain 5 bits.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.