chenpingjun1990

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  0 随笔 :: 22 文章 :: 5 评论 :: 0 Trackbacks

大端模式:所谓的大端模式,是指数据的高位,保存在内存的低地址中,而数据的低位,保存在内存的高地址中。

小端模式:所谓的小端模式,是指数据的高位保存在内存的高地址中,而数据的低位保存在内存的低地址中。
                                                                                                                                                ------百度百科
       大小端在"计算机组成原理"以及"编译原理"课上老师都有提及,而且我已经多次写程序验证自己使用的机器
是大段还是小端。但是每次看到都感觉有点陌生,因而在这写出来以加深自己的印象。


                                                      
         如上图:如何在程序中定义了一个union
union
{
 unsigned char ch[2];
 short         sh;
}byteorder;
并给byteorder.sh赋值为0x1234; 根据大小端的定义,
如果0x004472c0(低地址)中保存的是0x34(数据低位),而0x004472c1(高地址)中保存的是0x12(数据高位).则为小段模式.
如果0x004472c0(低地址)中保存的是0x12(数据高位),而0x004472c1(高地址)中保存的是0x34(数据低位).则为大段模式.

测试代码为:

 1#include <iostream>
 2using namespace std;
 3
 4union
 5{
 6    unsigned char ch[2];
 7    short         sh;
 8}
byteorder;
 9
10int main(int argc, char* argv[])
11{
12    byteorder.sh = 0x1234;
13    if (0x34 == byteorder.ch[0&& 0x12 == byteorder.ch[1])
14    {
15        cout << "小端模式" << endl;
16    }

17    else if (0x12 == byteorder.ch[0&& 0x34 == byteorder.ch[1])
18    {
19        cout << "大端模式" << endl;
20    }

21    else
22    {
23        cerr << "error" << endl;
24    }

25
26    return 0;
27}





 

posted on 2011-12-27 20:27 万川先生 阅读(572) 评论(0)  编辑 收藏 引用 所属分类: Cplusplus