【问题标题】:how can I determine the decimal value of a 32bit word containing 4 hexadecimal values?如何确定包含 4 个十六进制值的 32 位字的十进制值?
【发布时间】:2019-02-15 20:37:19
【问题描述】:

假设 RAM 中的字节 0 包含值 0x12。后续字节包含 0x34、0x45 和 0x78。在具有 32 位字的 Big-Endian 系统上,该字的十进制值是多少?

我知道对于 Big Endian 系统,单词的顺序是 0x78、0x45、0x34、0x12。我将每个值转换为十进制并得到 120、69、52、18。我想知道,为了获得单词的十进制值,我是将所有这些值加在一起(120 + 69 + 52 + 18),还是我应该将它们解释为十进制数 (120695218) 中的数字吗?

【问题讨论】:

    标签: endianness cpu-architecture


    【解决方案1】:

    您知道如何将单个整数从十六进制转换为十进制吗?在大端系统中,整数值为 0x12344578 = ... + 5*16^2 + 7*16^1 + 8*16^0


    如果您正在编写一个计算机程序以将单词打印为十进制,那么您已经将单词作为 binary 整数(十六进制是二进制的人类可读序列化格式,实际上并未使用内部),并且您将重复除以 10,每次使用余数作为低位。 (所以你首先生成数字 LSD,以相反的打印顺序。)

    对于一个程序,字节序不会成为问题。你只需做一个单词加载来获取寄存器中单词的整数值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-05
      • 2014-03-26
      • 2011-12-31
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      • 2013-12-26
      • 1970-01-01
      相关资源
      最近更新 更多