借助联合体union的特性实现检测当前计算机环境采用的是大端模式还是小端模式
方式一: 借助联合体union的特性实现(联合体类型数据所占的内存空间等于其最大的成员所占的空间,对联合体内部所有成员的存取都是相对于该联合体基地址的偏移量为 0 处开始,也就都是从该联合体所占内存的首地址位置开始。)
#include <stdio.h>
int main()
{union{int a; //4 byteschar b; //1 byte} data;data.a = 1; //占4 bytes,十六进制可表示为 0x 00 00 00 01//b因为是char型只占1Byte,a因为是int型占4Byte//所以,在联合体data所占内存中,b所占内存等于a所占内存的低地址部分 if(1 == data.b){ //走该case说明a的低字节,被取给到了b,即a的低字节存在了联合体所占内存的(起始)低地址,符合小端模式特征printf("Little_Endian\n");} else {printf("Big_Endian\n");}return 0;
}
说明:
赋值 1 是数据的低字节位(0x00000001)。
如果 1 被存储在 data所占内存 的低地址中,那data.b 的值将会是 1,就是小端模式。
如果 1 被存储在 data所占内存 的高地址中,那data.b 的值将会是 0,就是大端模式。
借助联合体union的特性实现检测当前计算机环境采用的是大端模式还是小端模式相关推荐
- 大端模式和小端模式区别与检测
背景 在内存中一个地址存储一个字节(Byte)的数据,即8位. 一个int型数据有32位,需要占用4Byte的空间,那么应该怎么存储int的数据呢?是高位先存储还是低位先存储?因此产生了两种不同的模式 ...
- 小端模式和大端模式的区别与C++代码检测
序言:当同一台主机上的两个进程(一个由c语言编写,另一个由Java编写)通信或者两台使用不同字节序的主机之间传送数据时,若字节序不同,则发送的数据和接受的数据不一样.因此需要进行小端字节序(小端模式) ...
- 关于联合体输出的问题(是否小端模式)
今天刷C语言题的时候 遇到两道关于联合体输出的问题 一遍查资料一遍上机验证最后总结出一些简陋的经验: 写得比较通俗 可能有专业词汇用的不当 欢迎指正! 情况一:(直接用题目数据 原理不变)(Turbo ...
- c语言 union及 大端小端
union 关键字的用法与struct 的用法非常类似. union 维护足够的空间来置放多个数据成员中的"一种",而不是为每一个数据成员配置空间,在union 中所有的数据成员共 ...
- C语言联合体union详解与实例
目录 定义 类型定义 变量定义 存储规则 通过联合体获取存储大小端 和结构体类似,联合体(union)是C语言中一种自定义数据类型.联合体中可以定义多个类型的成员变量,但所有成员共享同一块内存区域,所 ...
- 超详细C语言联合体union详解
文章目录 前言 一.联合(共用体)定义 二.联合的特点及运用 三.联合的大小计算 总结 前言 上一期C语言快速入门我们学习了枚举类型及相关知识点,这期我们来跟着笔者学习一下联合体相关知识,相信聪明的你 ...
- C语言联合体union详解
一.联合(共用体)定义 联合是一种特殊的自定义类型,该种类型定义的变量也包含一系列的成员,特征是这些成员共用同一块空间,所以联合体也被称为共用体. 代码如下(示例): #include<stdi ...
- 使用联合体判断大小端模式
1)联合体的概念和特征:union维护足够的空间来存放多个数据成员中的"一种",而不为每一个数据成员都配置空间,在union中所有的成员共用同一个空间,同一时间只存储一个数据成员, ...
- 大端小端区别、Union和Struct的内存分配
嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解.采用Little-endian模式的CPU对操作数的存放方式是从低字节到高字节,而Big-endian模式对操作数的 ...
最新文章
- 关于“航天•轻舟机器人国赛技术交流会”邀请函
- mysql 5.0 5.1_mysql从5.0升级到5.1
- html和xhtml和html5一些区别和笔记
- 【建议收藏】这个工具专门用于寻找路由器中的安全漏洞
- hubbledotnet 远程连接提示:无法从传输连接中读取数据:远程主机强迫关闭一个现有的连接...
- 使用 C++0x 时 make_shared 完美转发构造函数参数的测试编译器
- yum mysql 版本低_mysql小版本升级(yum方式)
- 计算机的精度论文,计算机辅助机械零件精度设计毕业论文
- 【Elasticsearch】如何在Elasticsearch中使用排名评估API
- vue-resource插件使用
- 倪光南院士:云计算发展须和云安全同步推进
- ajax die,check_ajax_referer()
- 计算机基础到底是哪些基础?为什么很重要!
- 10分钟看完,一文教你Docker 从入门到精通(值得收藏的教程)
- 分析1996~2015年人口数据特征间的关系并分析1996~2015年人口数据各个特征的分布分散状况
- fatal: unable to access ‘xxx‘: schannel: failed to receive handshake, SSL/TLS connection f...
- 从零开始之uboot、移植uboot2017.01(四、uboot的重定位)
- 输入姓名并分别输出姓和名
- 全球顶级企业和工程师荣获首届数字工程奖
- 网站SEO优化注意点
热门文章
- redis在linux下安装并測试(在spring下调用)
- Windows 10的应用体验之二
- mysql metadata lock(一)
- mysql cluster 安装NDB二进制版本
- EMOS SPF开启收不到信 及WEB收件箱不显示邮件列表等问题解决处理记录
- 使用MSBuild实现完整daily build流程 .
- WinXP/2000操作系统自动关机的实现
- 嵌入式系统低功耗管理(备忘)
- 图解C++虚函数 虚函数表
- python批量给文件命名为001,002,...【亲测有效】