字节序 big endian 和 little endian
2009-04-17 22:10
239 查看
Big-Endian 和 Little-Endian 字节排序
字节排序 含义
Big-Endian 一个Word
中的高位的Byte
放在内存中这个Word区域的低地址处。
Little-Endian 一个Word
中的低位的Byte
放在内存中这个Word区域的低地址处。
必须注意的是:表中一个Word的长度是16位,一个Byte的长度是8位。如果一个数超过一个Word的长度,必须先按Word分成若干部分,然后每一部分(即每个Word内部)按Big-Endian或者Little-Endian的不同操作来处理字节。
一个例子:
如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为
big-endian little-endian
0x0000 0x12 0xcd
0x0001 0x34 0xab
0x0002 0xab 0x34
0x0003 0xcd 0x12
(注意:0xab换算成2进制是10101011,是个8位的数。
测试你的机器是大端还是小端对齐小程序
字节排序 含义
Big-Endian 一个Word
中的高位的Byte
放在内存中这个Word区域的低地址处。
Little-Endian 一个Word
中的低位的Byte
放在内存中这个Word区域的低地址处。
必须注意的是:表中一个Word的长度是16位,一个Byte的长度是8位。如果一个数超过一个Word的长度,必须先按Word分成若干部分,然后每一部分(即每个Word内部)按Big-Endian或者Little-Endian的不同操作来处理字节。
一个例子:
如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为
big-endian little-endian
0x0000 0x12 0xcd
0x0001 0x34 0xab
0x0002 0xab 0x34
0x0003 0xcd 0x12
(注意:0xab换算成2进制是10101011,是个8位的数。
测试你的机器是大端还是小端对齐小程序
#include <stdio.h> #include <stdlib.h> int main() { int x = 1; if(*(char *)&x == 1) printf("the machine is little endian"); else printf("the machine is big endian"); return 0; }
相关文章推荐
- [J2SE]两种字节序:Big Endian和Little Endian
- 字节序Big Endian和Little Endian
- [C#]大小端字节序(Big Endian和Little Endian)
- (Big Endian)与(Little Endian)字节序详解
- 字节序:Big Endian 和 Little Endian
- 字节序:Big Endian 和 Little Endian
- 关于字节序Big Endian和Little Endian
- 一分钟了解字节序的大端(Big Endian)和小端(Little Endian)
- big endian和little endian字节序
- 字节序——大端(Big Endian)和小端(Little Endian)
- 大端(Big Endian)与小端(Little Endian)详解
- 判断机器字节存储顺序是big endian还是little endian
- Big endian Little endian
- little endian和big endian
- 大端(Big Endian)与小端(Little Endian)详解
- 大端(Big Endian)与小端(Little Endian)简介(ZZ)
- 大端(Big Endian)与小端(Little Endian)详解
- (转)大小端(Big endian,little endian)
- 大端(Big Endian)与小端(Little Endian)
- 关于Big Endian 和 Little Endian