首页 > 解决方案 > 如何确定包含 4 个十六进制值的 32 位字的十进制值?

问题描述

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

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

标签: endiannesscpu-architecture

解决方案


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


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

对于一个程序,字节顺序不会是一个问题。您只需执行单词加载即可在寄存器中获取单词的整数值。


推荐阅读