gpt4 book ai didi

c - 小端与大端

转载 作者:太空狗 更新时间:2023-10-29 16:59:51 26 4
gpt4 key购买 nike

假设我有 4 字节整数,我想将它转换为 2 字节短整数。我是对的,在这两个(小端和大端)中,短整数将由这个 4 字节整数的 2 个最低有效字节组成?

第二个问题:
这样的代码在小端和大端处理器中会产生什么结果?

int i = some_number;  
short s = *(short*)&i;

恕我直言,在大端处理器中,将复制 2 个最高有效字节,而在小端处理器中,将复制 2 个最低有效字节。

最佳答案

Am I right that in both short integer will consist of 2 least significant bytes of this 4Byte integer?

是的,根据定义。

bigE 和 littleE 的区别在于最低有效字节是否在最低地址。在小端处理器上,最低地址是最低有效位,x86 就是这样做的。

这些在小 E 上给出了相同的结果。

short s = (short)i;
short s = *(short*)&i;

在大端处理器上,最高地址是最低有效位,68000 和 Power PC 就是这样做的(实际上 Power PC 可以两者都是,但 Apple 的 PPC 机器使用 bigE)

这些在大 E 上给出了相同的结果。

short s = (short)i;
short s = ((short*)&i)[1]; // (assuming i is 4 byte int)

因此,如您所见,小端法允许您获取操作数的最低有效位而无需知道它有多大。 little E 具有保持向后兼容性的优势。

那么big endian有什么优势呢? 它创建更易于阅读的十六进制转储。

确实,摩托罗拉的工程师认为减轻读取十六进制转储的负担比向后兼容更重要。英特尔的工程师却持相反的看法。

关于c - 小端与大端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2247736/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com