当前位置:网站首页>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 .
边栏推荐
- ThreadLocal详解
- Leetcode question brushing (XI) -- sequential questions brushing 51 to 55
- Aardio - 通过变量名将变量值整合到一串文本中
- 0 basic learning C language - digital tube
- The ceiling of MySQL tutorial. Collect it and take your time
- RESNET rs: Google takes the lead in tuning RESNET, and its performance comprehensively surpasses efficientnet series | 2021 arXiv
- 剑指offer刷题记录1
- Lora sync word settings
- What are the specific steps and schedule of IELTS speaking?
- poj 1094 Sorting It All Out (拓扑排序)
猜你喜欢
硬件开发笔记(十): 硬件开发基本流程,制作一个USB转RS232的模块(九):创建CH340G/MAX232封装库sop-16并关联原理图元器件
Assembly and Interface Technology Experiment 6 - ADDA conversion experiment, AD acquisition system in interrupt mode
PVL EDI project case
HDR image reconstruction from a single exposure using deep CNN reading notes
The nearest common ancestor of binary (search) tree ●●
Adavit -- dynamic network with adaptive selection of computing structure
Hardware development notes (10): basic process of hardware development, making a USB to RS232 module (9): create ch340g/max232 package library sop-16 and associate principle primitive devices
Aardio - 利用customPlus库+plus构造一个多按钮组件
Clip +json parsing converts the sound in the video into text
CCNA Cisco network EIGRP protocol
随机推荐
SQL Server生成自增序号
China 1,4-cyclohexanedimethanol (CHDM) industry research and investment decision-making report (2022 Edition)
poj 1094 Sorting It All Out (拓扑排序)
NetXpert XG2帮您解决“布线安装与维护”难题
【踩坑合辑】Attempting to deserialize object on CUDA device+buff/cache占用过高+pad_sequence
LeetCode 练习——剑指 Offer 26. 树的子结构
Leetcode: interview question 17.24 Maximum cumulative sum of submatrix (to be studied)
PVL EDI 项目案例
The SQL response is slow. What are your troubleshooting ideas?
go多样化定时任务通用实现与封装
每日一题:力扣:225:用队列实现栈
Aardio - 不声明直接传float数值的方法
做国外LEAD2022年下半年几点建议
自制J-Flash烧录工具——Qt调用jlinkARM.dll方式
Report on technological progress and development prospects of solid oxide fuel cells in China (2022 Edition)
OpenCV VideoCapture. Get() parameter details
Notes de développement du matériel (10): flux de base du développement du matériel, fabrication d'un module USB à RS232 (9): création de la Bibliothèque d'emballage ch340g / max232 SOP - 16 et Associa
Data storage (1)
雅思口语的具体步骤和时间安排是什么样的?
MySQL----初识MySQL