什么是大端模式和小端模式?
(1)大端模式:
数据的低位保存在内存的高地址中;数据的高位保存在内存的低地址中。(低在高处)
(2)小端模式:
数据的高位保存在内存的高地址中;数据的低位保存在内存的低地址中。(低在低处)
注意:讨论的是字节的顺序问题。
举例说明:假如有一个16bit的short 型 x,在内存中的地址为Ox0010, x的值为Ox1122,那么Ox11为高字节,Ox22为低字节。 那么对于大端模式:Ox11在低地址中(即Ox0010);Ox22在高地址中(即Ox0011)。 对于小端模式:则相反。
实战笔测:(本人笔测遇到)
这里补充指针类型的一些知识: (1)指针类型决定了指针解引用操作符能访问几个字节:char*p;p访问一个字节,intq;*q访问了4个字节。 (2)指针类型决定了指针 +1 或 -1 操作的不同;p+1表示跳过1个字符;q+1表示跳过一个整型(4个字节)
编写一个函数,判断当前机器字节序,小端返回1,大端则返回0。
int check_sys()
{
int a=20;
char *p=(char*)&a;
if(*p==0)
return 0;
else
return 1;
}
测试代码:
#include<stdio.h>
int check_sys()
{
int a=20;
char *p=(char*)&a;
if(*p==0)
return 0;
else
return 1;
}
int main()
{
int ret=check_sys();
if(1==ret)
printf("小端!!!");
else
printf("大端!!!");
}
小端!!!
|