Assembly 在小端点中Dword到dec的转换

Assembly 在小端点中Dword到dec的转换,assembly,decimal,endianness,dword,Assembly,Decimal,Endianness,Dword,Dword x作为一系列字节123、29保存到内存中。使用小尾数时,十进制中x的值是多少 这个问题的答案是7547 谁能一步一步地给我解释一下吗?我已经知道little endian颠倒了顺序,但这并没有给出答案。我试图转换到另一个系统,但它仍然给了我错误的答案。当你谈论DWORD和转换到小端时,我假设你的输入中有一个32位值的大端编码 让我们将[123 | 29 | 00 | 00]转换为十六进制:[7B | 1D | 00 | 00]=>十进制表示法是2065498112 让我们倒过来:[0

Dword x作为一系列字节123、29保存到内存中。使用小尾数时,十进制中x的值是多少

这个问题的答案是
7547


谁能一步一步地给我解释一下吗?我已经知道little endian颠倒了顺序,但这并没有给出答案。我试图转换到另一个系统,但它仍然给了我错误的答案。

当你谈论DWORD和转换到小端时,我假设你的输入中有一个32位值的大端编码

  • 让我们将[123 | 29 | 00 | 00]转换为十六进制:[7B | 1D | 00 | 00]=>十进制表示法是2065498112

  • 让我们倒过来:[00 | 00 | 1D | 7B]=>十进制表示法是7547


  • 我想对卡斯珀的回答给出另一种解释:

    在十进制系统中,您可以在每个数字中“存储”0到9之间的值。要存储较大的数字,请使用多个数字。写为“1234”的数字的值计算如下:

    1234=4+3*10+2*10*10+1*10*10*10

    使用字节,您可以在每个数字中存储0到255之间的值。与十进制系统一样,您可以使用多个字节存储较大的值:

    4,3,2,1=4+3*256+2*256*256+1*256*256*256

    123,29=123+29*256=7547


    (“Little endian”表示最小的字节首先存储在内存中;就像从右到左读取十进制数一样。)

    7547(十进制)在Little endian
    DWORD
    中是7B 1D 00 00,而不仅仅是7B 1D(123 29)。在big endian中是00 1D 7B。您可以看到相同字节值的不同顺序。在x86上,双字是4字节,而不是2字节。除非你在一个假设的架构上,其中一个“字”=1字节?在大多数非x86 ISA的术语中,“字”是32位,dword是64位,因此这对其他任何东西都没有意义。也许你的意思是“单词”而不是“dword”?没有必要转换成十六进制和倒数。123+29*256=7547问题中没有提到big-endian或hex。在这里使用它们只会增加混乱。