繁体   English   中英

将 32 位地址分成几部分

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM