当前位置:网站首页>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 .
边栏推荐
- 自制J-Flash烧录工具——Qt调用jlinkARM.dll方式
- OpenCV VideoCapture. Get() parameter details
- Research and investment strategy report of China's VOCs catalyst industry (2022 Edition)
- Memorabilia of domestic database in June 2022 - ink Sky Wheel
- 重磅新闻 | Softing FG-200获得中国3C防爆认证 为客户现场测试提供安全保障
- UDP programming
- NetXpert XG2帮您解决“布线安装与维护”难题
- 变量与“零值”的比较
- 【LeetCode】19、 删除链表的倒数第 N 个结点
- pytorch_YOLOX剪枝【附代码】
猜你喜欢

Sword finger offer question brushing record 1

3DMAX assign face map

ResNet-RS:谷歌领衔调优ResNet,性能全面超越EfficientNet系列 | 2021 arxiv

The nearest common ancestor of binary (search) tree ●●

Unity3d minigame-unity-webgl-transform插件转换微信小游戏报错To use dlopen, you need to use Emscripten‘s...问题

Installation and use of labelimg
![[leetcode] 19. Delete the penultimate node of the linked list](/img/ab/25cb6d6538ad02d78f7d64b2a2df3f.png)
[leetcode] 19. Delete the penultimate node of the linked list

uniapp滑动到一定的高度后固定某个元素到顶部效果demo(整理)

UE4蓝图学习篇(四)--流程控制ForLoop和WhileLoop

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
随机推荐
void关键字
网络基础入门理解
Adavit -- dynamic network with adaptive selection of computing structure
pytorch_ Yolox pruning [with code]
MySQL教程的天花板,收藏好,慢慢看
General implementation and encapsulation of go diversified timing tasks
Signed and unsigned keywords
Puppeteer连接已有Chrome浏览器
空结构体多大?
Management background --5, sub classification
Improving Multimodal Accuracy Through Modality Pre-training and Attention
[linear algebra] determinant of order 1.3 n
Applet system update prompt, and force the applet to restart and use the new version
Leetcode exercise - Sword finger offer 26 Substructure of tree
labelimg的安装与使用
关于声子和热输运计算中BORN电荷和non-analytic修正的问题
Installation and use of labelimg
signed、unsigned关键字
Jafka来源分析——Processor
go多样化定时任务通用实现与封装