【问题标题】:How to extract first 20 bits of Hexadecimal address?如何提取十六进制地址的前 20 位?
【发布时间】:2014-12-14 07:30:51
【问题描述】:

我有以下十六进制 32位虚拟地址地址:0x274201

如何提取前 20 位,然后将它们转换为十进制?

我想知道如何手动执行此操作。

更新:

@Pete855217 指出地址0x274201 不是 32位0x 也不是地址的一部分,因为它用于表示 十六进制地址。

这表明我将在 0X 之后添加 00,所以现在真正的 32 位地址将是:0x00274201。我已经更新了我的答案!

【问题讨论】:

  • 你有它作为一个字符串,作为一个数字,以及什么编程语言?
  • 我想手工完成。我很抱歉没有这么清楚。我相信我已经回答了自己的问题,希望我是对的?
  • 这可能会有所帮助:stackoverflow.com/questions/18906027/…。手动执行此操作相对简单,SO 并不是一个真正的基本数学站点,但有许多关于使用编程语言进行转换的参考。

标签: hex extract 32-bit


【解决方案1】:

我相信我已经回答了自己的问题,希望我是对的?

首先将 HEX 数字 0x00274201 转换为 BIN(这是很长的路,但我从中学到了一些东西)

但是,我注意到前 20 位在 HEX 中包含 00274。这是有道理的,因为每个 HEX 数字都是四个 BIN 数字。

所以,既然我想要前 20 位,那么我真的要

五个 十六进制数字,因为 5 * 4 = 20(BIN 中的位)

因此这将产生 00274 in HEX = 628 in DEC(十进制)。

【讨论】:

  • 您正在处理的 32 位数字是 0027 4201。0x 仅将其标识为十六进制,您不转换这些字符。您想获得的位来自 27420,而不是 0x274 - 只有 12 位,所以您的答案完全错误。
  • 没有问题 lucidgold,你的答案对我来说是正确的,即。 0000 0000 0010 0111 0100
猜你喜欢
  • 1970-01-01
  • 2018-05-29
  • 2020-01-15
  • 2020-08-08
  • 2021-05-09
  • 2016-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多