假设整数是2个字节,我想存储769.在二进制中,它将存储为00000011 00000001
如果我将其转换为小端,则应将其存储为 00000001 00000011。在以这种方式存储之后,二进制数的值应该是49280(从左到右)。即使我从右到左计算,也与769不同。
编译器是否会重新排列字节以计算正确的值?在那种情况下,我认为大端将比小端更好。
答案 0 :(得分:0)
大端& little endian描述了内存管理的存储,即“字节”如何存储在内存中。它并不意味着计算。 &安培;您可以在处理器循环后交换字节。您可以做错,因为您在处理器执行之前交换了字节,这就是为什么它给出了错误的值!
答案 1 :(得分:0)
编译器没有运行程序,编译器从源代码生成可执行文件,可执行文件驻留在内存中。 Processer通过指令获取可执行指令并执行指令操作。
现在什么是可执行文件?可执行程序只是一系列机器(处理器)指令。
小端机首先读/写整数LSB。而大端读/写MSB优先。
在您的示例中,769 LE机器将首先写入00000001字节,因此它存储在较低地址' 2540'。 BE机器将首先写入MSB(00000011存储在' 2540'。
---------------------------------------------
addr | 2540 | 2541 | 2542
---------------------------------------------
LE | 00000001 | 00000011 |
BE | 00000011 | 00000001 |
-> 1st byte R/W 2nd byte R/W