跳至内容
响水凹
欢迎来到 Guang-Wen Duan (Dennis Duan) 的个人 Wiki
用户工具
登录
站点工具
搜索
工具
显示页面
过去修订
反向链接
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
您的足迹:
computer:c:tips:byte_order
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== 字节序(Byte order) ====== 对于字节编址(byte-addressable)的计算机,通常存在两种字节序: * 高端字节序(big-endian, left-to-right) * 小端字节序(little-endian, right-to-left) 比如一个32位(4字节)的整数0x01020304,下面是两种字节序的存储图示(A代表地址): ^ 高端字节序 ^^^^^ | 01 | 02 | 03 | 04 | ... | | A | A+1 | A+2 | A+3 | A+4 | ^ 小端字节序 ^^^^^ | 04 | 03 | 02 | 01 | ... | | A | A+1 | A+2 | A+3 | A+4 | 对于高端字节序,起始地址单元存放的是整数的最左(leftmost)或最高位字节(high-order byte)。而小端字节序则相反,起始地址单元存放的是整数的最右(rightmost)或最低位字节(low-order byte)。 下面是一个测试本机字节序的程序(这里union的用法是不可移植的): <code c> #include <stdio.h> #include <stdlib.h> union { int i; char c[sizeof(int)]; } u; int main(void) { u.i = 1; if (u.c[0] == 1) printf("little-endian\n"); else if (u.c[sizeof(int) - 1] == 1) printf("big-endian\n"); else printf("unknown\n"); exit(0); } </code> {{tag>C语言}}
computer/c/tips/byte_order.txt
· 最后更改: 2014/11/01 02:02 由
127.0.0.1
页面工具
显示页面
过去修订
反向链接
回到顶部