当前位置:网站首页>How to confirm the storage mode of the current system by program?
How to confirm the storage mode of the current system by program?
2022-07-06 22:31:00 【It's Beichen not too PI acridine】
union keyword
union The usage of key words and struct It's very similar to .
union Maintain enough space to place... In multiple data members “ A kind of ”, Instead of configuring space for each data member , stay union All data members in share a space , Only one data member can be stored at a time , All data members have the same starting address .
union StateMachine
{
char character;
int number;
char *str;
double exp;
};
One union Only configure a large enough space to accommodate the maximum length of data members , Take the example above , The maximum length is double Form , therefore StateMachine The size of the space is double The size of the data type .
Large and small mode pairs union The impact of type data
union
{
int i;
char a[2];
}*p, u;
p = &u;
p->a[0] = 0x39;
p->a[1] = 0x38;
p.i What should be the value of ?
Its value is adopted by the system Storage mode and int type The number of bytes in the storage space is determined
When int by 4 Byte time
answer : When in big end mode 0x39380000
answer : When in small end mode 0x00003839
Here we need to consider the storage mode : Big end mode and small end mode .
Big end model (Big_endian): The high bytes of word data are stored in the low address , The low byte of word data is stored in the high address .
The small end model (Little_endian): The high byte of word data is stored in the high address , The low byte of word data is stored in the low address .
union The space occupied by type data is equal to the space occupied by its largest member . Yes union The members of type are accessed relative to the base address of the union. The offset is 0 Start at , That is to say, no matter which variable is accessed by the consortium, it is accessed from union The first address of .
How to confirm the storage mode of the current system with a program ?
Please write one. C function , If the processor is Big_endian Of , Then return to 0; if Little_endian Of , Then return to 1.
hypothesis int Type variable i Is initialized to 1.
Store in big end mode , The memory layout is shown below :
Store in small end mode , The memory layout is shown below :

Variable i Occupy 4 Bytes , But the value of only one byte is 1, The values of the other three bytes are 0. If the value on the low address is 0, without doubt , This is the big end mode ; If the value on the low address is 1, without doubt , This is the small end mode .
You can use union Characteristics of type data : All members have the same starting address .
int checkSystem( )
{
union check
{
int i;
char ch;
} c;
c.i = 1;
return (c.ch ==1);
}
You can use this function to test the storage mode of your current system .
边栏推荐
- POJ 1258 Agri-Net
- uniapp设置背景图效果demo(整理)
- three.js绚烂的气泡效果
- 每日一题:力扣:225:用队列实现栈
- Leetcode exercise - Sword finger offer 26 Substructure of tree
- 关于声子和热输运计算中BORN电荷和non-analytic修正的问题
- 【LeetCode】19、 删除链表的倒数第 N 个结点
- Dealing with the crash of QT quick project in offscreen mode
- 2022-07-05 stonedb sub query processing parsing time analysis
- Unity3d minigame unity webgl transform plug-in converts wechat games to use dlopen, you need to use embedded 's problem
猜你喜欢

树的先序中序后序遍历

如何用程序确认当前系统的存储模式?

Leetcode exercise - Sword finger offer 26 Substructure of tree

【编译原理】做了一半的LR(0)分析器

Signed and unsigned keywords

第4章:再谈类的加载器

MySQL ---- first acquaintance with MySQL

2022-07-04 mysql的高性能数据库引擎stonedb在centos7.9编译及运行

Clip +json parsing converts the sound in the video into text

0 basic learning C language - digital tube
随机推荐
The nearest common ancestor of binary (search) tree ●●
RESNET rs: Google takes the lead in tuning RESNET, and its performance comprehensively surpasses efficientnet series | 2021 arXiv
LeetCode 练习——剑指 Offer 26. 树的子结构
NPDP certification | how do product managers communicate across functions / teams?
Should novice programmers memorize code?
【编译原理】做了一半的LR(0)分析器
Mysql database basic operations DML
Classification, function and usage of MySQL constraints
NetXpert XG2帮您解决“布线安装与维护”难题
数据处理技巧(7):MATLAB 读取数字字符串混杂的文本文件txt中的数据
signed、unsigned关键字
Spatial domain and frequency domain image compression of images
Attack and defense world miscall
pytorch_ Yolox pruning [with code]
UDP programming
Seata aggregates at, TCC, Saga and XA transaction modes to create a one-stop distributed transaction solution
case 关键字后面的值有什么要求吗?
第3章:类的加载过程(类的生命周期)详解
硬件開發筆記(十): 硬件開發基本流程,制作一個USB轉RS232的模塊(九):創建CH340G/MAX232封裝庫sop-16並關聯原理圖元器件
0 basic learning C language - interrupt