二进制值的小端计算

时间:2018-01-12 05:52:04

标签: c endianness

假设整数是2个字节,我想存储769.在二进制中,它将存储为00000011 00000001

如果我将其转换为小端,则应将其存储为 00000001 00000011。在以这种方式存储之后,二进制数的值应该是49280(从左到右)。即使我从右到左计算,也与769不同。

编译器是否会重新排列字节以计算正确的值?在那种情况下,我认为大端将比小端更好。

2 个答案:

答案 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 
相关问题