C基础练习二:利用联合体检测系统的大小端存储模式一例
2012-07-10 23:59
330 查看
先看代码:
注:
1)联合体的概念和特征:union维护足够的空间来存放多个数据成员中的“一种”,而不为每一个数据成员都配置空间,在union中所有的成员共用同一个空间,同一时间只存储一个数据成员,最大的特征就是所有的数据成员具有相同的起始地址即联合体的基地址。
2)计算机中字节存储主要有两种:大端模式(Big_endian)和小端模式(Little_endian),从英文名字上可以明白,大端模式是从低地址开始,高位结束;小端模式是从高地址开始,低地址结束。
3)利用union中所有数据成员具有同样的起始地址的特点,通过一个int成员存储1,然后通过char成员来读取,即可巧妙地得出数据存放的方式,若通过char成员(即读取起始位置上的第一个字节)读取,若得出值为1,则说明是小端模式。
通过GCC编译运行,运行结果跟计算机有关,(有的计算机支持两种模式,可通过设置来切换),在我机器上运行结果是:this is Little_endian
#include <stdlib.h> #include <stdio.h> /********************************************************************** * * 联合体的概念和特征 * 内存存储的大端模式(Big-endian)和小端模式(Little-endian) * 判断当前系统的大端还是小端一例 * **********************************************************************/ int checkSystem(); int main(int argc, char * argv[]) { int res = checkSystem(); if(res) { printf("this is Little_endian\n"); }else { printf("this is Big_endian\n"); } } int checkSystem() { union checkdata { int i; char ch; } check; //定义一个有两个数据项的联合体,特征就是任何一个元素均是从联合体的基地址开始存储或保存 check.i = 1; return (check.ch == 1); }
注:
1)联合体的概念和特征:union维护足够的空间来存放多个数据成员中的“一种”,而不为每一个数据成员都配置空间,在union中所有的成员共用同一个空间,同一时间只存储一个数据成员,最大的特征就是所有的数据成员具有相同的起始地址即联合体的基地址。
2)计算机中字节存储主要有两种:大端模式(Big_endian)和小端模式(Little_endian),从英文名字上可以明白,大端模式是从低地址开始,高位结束;小端模式是从高地址开始,低地址结束。
3)利用union中所有数据成员具有同样的起始地址的特点,通过一个int成员存储1,然后通过char成员来读取,即可巧妙地得出数据存放的方式,若通过char成员(即读取起始位置上的第一个字节)读取,若得出值为1,则说明是小端模式。
通过GCC编译运行,运行结果跟计算机有关,(有的计算机支持两种模式,可通过设置来切换),在我机器上运行结果是:this is Little_endian
相关文章推荐
- 检测系统的大小端模式--利用union
- 利用联合体union确认当前系统的存储模式
- 深入理解计算机系统-之-数值存储(一)-CPU大端和小端模式详解
- 利用联合体判断CPU是大端模式还是小端模式
- 确认当前系统的大小端存储模式
- c\c++ 复习基础要点07---内存存储 大端模式、小端模式
- 大端小端模式简单介绍 以及三种检测大小端存储的方法
- 本文是笔者根据数据库编程经验,利用C++语言的模板、继承、授权、多态等面向对象特性,借鉴命令模式,实现了对象在关系数据中的存储,降低应用系统与数据库之间的耦合,提高开发效率。
- 《C关键字分析》利用联合体判断处理器存储模式
- 利用联合体判断cpu的存储模式
- 确认当前系统的存储模式(大端模式,小端模式)
- 测试系统存储是大端模式还是小端模式的方法
- 如何用程序确认当前系统的存储模式(大端模式、小端模式)
- 【C语言深度剖析】测试系统存储是大端模式还是小端模式的方法
- 系统的存储模式---大小端模式
- 系统的存储模式大小端理解与判断
- 写一个程序判断当前系统存储模式是大端还是小端
- 如何用程序检测系统处理器的存储模式(即是大端存储还是小端存储)
- 深入理解计算机系统-之-数值存储(一)-CPU大端和小端模式详解
- 大小端模式解析(联合体union)