小小笔试题(一)

从最简单的开始。

笔试题如下:

1.2012年9月15日,中兴面试
  小端系统

union{  
        int i;  
        unsigned char ch[2];  
}Student;  
  
  
int main()  
{  
        Student  student;  
        student.i=0x1420;  
        printf("%d  %d",student.ch[0],student.ch[1]);  
    return 0;  
}  

输出结果为?(答案:32 20)

2.相关内容

 (1)union类型

   从内存的角度来说,Union就是一个类,只不过,它所包含的所以的数据成员都在同一个地址上。

   因此Union对象的大小就是它所包含的数据类型中最大的那个。

 (2)大端与小端模式

如果将一个32位的整数0x12345678存放到一个整型变量(int)中,这个整型变量采用大端或者小端模式在内存中的存储由下表所示。为简单起见,本书使用OP0表示一个32位数据的最高字节MSB(Most Significant Byte),使用OP3表示一个32位数据最低字节LSB(Least Significant Byte)。

地址偏移

大端模式

小端模式

0x00

12(OP0)

78(OP3)

0x01

34(OP1)

56(OP2)

0x02

56(OP2)

34(OP1)

0x03

78(OP3)

12(OP0)

如果将一个16位的整数0x1234存放到一个短整型变量(short)中。这个短整型变量在内存中的存储在大小端模式由下表所示。

地址偏移

大端模式

小端模式

0x00

12(OP0)

34(OP1)

0x01

34(OP1)

12(OP0)

 由上表所知,采用大小模式对数据进行存放的主要区别在于在存放的字节顺序,大端方式将高位存放在低地址,小端方式将高位存放在高地址。采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。到目前为止,采用大端或者小端进行数据存放,其孰优孰劣也没有定论。

3 .参考

(1)下边这篇文章对与大端与小端讲的很详细,特别从几个角度对端模式进行解析。

http://www.52rd.com/Blog/Detail_RD.Blog_imjacob_14837.html

(2)C语言判断数据存储时大端模式还是小端模式

     

posted @ 2012-10-09 23:01  silver1116  阅读(196)  评论(0编辑  收藏  举报