大小端问题
Short a= 15; //在内存中是一个字节一个字节的存储
高字节 0000 0000
低字节 0000 1111
15在内存中的存储
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
小端
|
低地址 |
高地址 | ||
|
0000 |
1111 |
0000 |
0000 |
大端
|
低地址 |
高地址 | ||
|
0000 |
0000 |
0000 |
1111 |
大端换成小端不用库函数用位运算
例 a = 1010 0011 1111 0000 1010 0101 1100 0011
大端 10100011 11110000 10100101 11000011
小端 11000011 10100101 11110000 10100011
(a&0xff000000)>>24| (a&0x00ff0000)>>8|(a&0x0000ff00)<<8|(a&0x000000ff)<<24
写程序判断大小端
typedef union
{
Char a;
Int b;
} DATE;
DATE A;
A.b = 1;
Printf(“%d”,A.a);//A.a是看char和int型共用的那个部分
0 小端
1 大端
该共用体总共占了4个字节
|
低地址 |
高地址 | ||
|
Char Int 都低地址开始存,最共用的是这个字节 |
|
|
|
假如是大端
|
低地址 |
高地址 | ||
|
0000 |
0000 |
0000 |
0001 |
假如是小端
|
低地址 |
高地址 | ||
|
0000 |
0001 |
0000 |
0000 |
本文详细解释了计算机系统中的大小端存储模式,并通过实例展示了如何进行大小端之间的转换。此外,还提供了一种判断系统当前使用何种端序的方法。
5万+

被折叠的 条评论
为什么被折叠?



