您的位置:首页 > 职场人生

大端模式和小端模式解析(包含面试题)

2013-08-05 13:57 323 查看
转载自http://blog.csdn.net/ce123_zhouwei/article/details/6971544

Big-Endian和Little-Endian的定义如下:

1) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。

2) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。

举一个例子,比如数字0x12 34 56 78在内存中的表示形式为:

1)大端模式:

低地址 -----------------> 高地址

0x12  |  0x34  |  0x56  |  0x78

2)小端模式:

低地址 ------------------> 高地址

0x78  |  0x56  |  0x34  |  0x12

可见,大端模式和字符串的存储模式类似。

 

腾讯2013关于大小端的面试题:http://www.cnblogs.com/yinble/archive/2013/04/15/3022345.html

1.

int main()

{

  long long a=1;

  long long b=2;

  long long c=3;

  printf("%d,%d,%d",a,b ,c);

  return 0;

}

输出结果是什么?(32位环境,cpu为小端模式,所有参数用栈传递)

无论在32/64环境中long long都是8个字节,参数从右到左进栈,栈中从栈底到栈顶依次为c、b、a,%d将打印栈中的4个字节,又因为是小端模式,所以打印结果为1 0 2

2.

unsigned int a= 0x1234;

unsigned char b=*(unsigned char *)&a;

在32位大端模式处理器上变量b= ?

大端存储,从低地址到高地址存储的为0x34、0x12,b指针指向a的第一个字节即0x34,0x34转换为ascii为0,所以输出结果为0.

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C 存储 面试题