小端架构中的 4 字节序列 0x86 0x65 0x71 0xA5 被解释为 32 位有符号整数,代表什么十进制数?
4 byte sequence 0x86 0x65 0x71 0xA5 in a little-endian architecture interpreted as a 32-bit signed integer represents what decimal?
我知道如何将 0x86 0x65 0x71 0xA5
转换为小数,我只是不确定如何处理它。
我假设它是(从最不重要到最重要)134 101 113 165,但过了这一点我到底做了什么?我猜 134,101,113,165 是不正确的。我需要将任何东西转换成二进制文件才能做到这一点吗?有点迷失概念。
通过将每个八位字节转换为十进制,您实际上已经将数字转换为以 256 为底数的数字。您可以那样做,但这并不是特别容易。您必须按以下方式组合这些部分:
134 x (256^0) + 101 x (256^1) + 113 x (256^2) + 165 x (256^3)
0x86 0x65 0x71 0xA5 作为 little-endian 表示法中的 32 位无符号整数意味着十六进制整数为 0xA5716586。然后正常从十六进制转换为十进制即可。
无论哪种方式,您将获得 2,775,672,198。
但是,这是一个有符号整数,而不是无符号整数。又因为最高位字节是A5,所以最高位是1。所以,这是一个负数。
所以我们需要做一些数学运算:
FFFFFFFF - A5716586 = 5A8E9A79
所以:
A5716586 + 5A8E9A79 = FFFFFFFF
此外,在 32 位算术中:
FFFFFFFF + 1 = 0
所以:
FFFFFFFF => -1
结合这两个:
A5716586 + 5A8E9A79 => -1
A5716586 = -1 -5A8E9A79 = - (5A8E9A79 + 1) = - 5A8E9A7A
还有:
5A8E9A7A => 1,519,295,098 (decimal)
所以我们的最终答案是-1,519,295,098
我知道如何将 0x86 0x65 0x71 0xA5
转换为小数,我只是不确定如何处理它。
我假设它是(从最不重要到最重要)134 101 113 165,但过了这一点我到底做了什么?我猜 134,101,113,165 是不正确的。我需要将任何东西转换成二进制文件才能做到这一点吗?有点迷失概念。
通过将每个八位字节转换为十进制,您实际上已经将数字转换为以 256 为底数的数字。您可以那样做,但这并不是特别容易。您必须按以下方式组合这些部分:
134 x (256^0) + 101 x (256^1) + 113 x (256^2) + 165 x (256^3)
0x86 0x65 0x71 0xA5 作为 little-endian 表示法中的 32 位无符号整数意味着十六进制整数为 0xA5716586。然后正常从十六进制转换为十进制即可。
无论哪种方式,您将获得 2,775,672,198。
但是,这是一个有符号整数,而不是无符号整数。又因为最高位字节是A5,所以最高位是1。所以,这是一个负数。
所以我们需要做一些数学运算:
FFFFFFFF - A5716586 = 5A8E9A79
所以:
A5716586 + 5A8E9A79 = FFFFFFFF
此外,在 32 位算术中:
FFFFFFFF + 1 = 0
所以:
FFFFFFFF => -1
结合这两个:
A5716586 + 5A8E9A79 => -1
A5716586 = -1 -5A8E9A79 = - (5A8E9A79 + 1) = - 5A8E9A7A
还有:
5A8E9A7A => 1,519,295,098 (decimal)
所以我们的最终答案是-1,519,295,098