【发布时间】:2020-12-01 18:07:28
【问题描述】:
我有一个问题,它是与大学教授关于 Endianness 的一种分歧,所以我没有找到任何方法来解决这个问题并找到正确的答案,而是在 Stack Overflow 社区提出并展开讨论。
假设我们将这个数字 (hex)11FF1 定义为一个整数,例如在 C++ 中它会像:int num = 0x11FF1,而 我说 数字将在 little endian 机器的内存中显示为:
addr[0] is f1 addr[1] is 1f addr[2] is 01 addr[3] is 00
in binary : 1111 0001 0001 1111 0000 0001 0000 0000
因为编译器将 0x11ff1 视为 0x0001ff1 并将 00 视为 第一个字节 和 01 作为 2nd byte 等等,对于 Big Endian 我相信它看起来像:
addr[0] is 00 addr[1] is 01 addr[2] is 1f addr[3] is f1
in binary : 0000 0000 0000 0001 0001 1111 1111 0001
但他有另一种看法,他说:
小端序
大端序:
其实我看不出他的表述有什么逻辑,所以我希望开发者解决这个分歧,提前谢谢。
【问题讨论】:
-
我想宣布教授已经完全响应并纠正了上面的例子。
标签: memory cpu-architecture endianness data-representation