我对这两个概念感到困惑。我明白如何使用大端表示法来表示某些内容。
例如,-12 的大端表示是 1111 1111 1111 0100。
但是为什么小端表示法是 1111 0100 1111 1111 而不是 0100 1111 1111 1111?
我对这两个概念感到困惑。我明白如何使用大端表示法来表示某些内容。
例如,-12 的大端表示是 1111 1111 1111 0100。
但是为什么小端表示法是 1111 0100 1111 1111 而不是 0100 1111 1111 1111?
小端字节序是指对于多字节值,将其字节顺序颠倒。
1111 1111 1111 0100
是一个2字节的值,其中1111 1111
是第一个字节,1111 0100
是第二个字节。在小端字节序中,先读取第二个字节(或最低有效字节),因此最终的表示为1111 0100 1111 1111
。
字节序(Endianness)是关于字节地址顺序的问题。小端模式表示低位字节在低地址,大端模式则相反。因此,它是关于字节(8位块)而不是半字节(4位块)的。我们使用的大多数计算机(有少数例外)在单个地址级别上寻址字节。
以-12
为例:
在内存中,小端模式的表示为:
000000: F4
000001: FF
大端序,在内存中,将是:
000000: FF
000001: F4
FF F4
(16位整数中的-12)推入堆栈,并且它是小端,则应首先推入FF
,然后是F4
,因为这会将FF
放在较高的地址上。 - lurker