目录
一、什么是数据中的高位与低位?内存空间中的高地址与低地址?
1)内存空间中的低地址与高地址
2)数据中的高位与低位
二、什么是大端存储与小端存储
1)大端存储
内存空间中低地址存储数据中的高字节;内存空间中高地址存储数据中的低字节。
2)小端存储
内存空间中的低地址存放数据中的低字节;内存空间中的高地址存放数据中的低字节。
三、大小端存储方法的测试
1)使用指针测试大小端
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a = 0x12345678;
char *p = (char *)&a;
if (*p == 0x12)
{
printf("大端存储\n");
}
else
{
printf("小端存储\n");
}
printf("%#x\n", *p);
return 0;
}
我们将int*类型的 &a强制转换为了char*类型,但值没有改变(地址)
*p就是p[0],把变量的地址强制类型转换为char*,这样就可以每次取出一个字节的内容,因为char的大小就是1个字节。
2)使用共用体测试大小端
#include <stdio.h>
#include <string.h>
union demon
{
int a;
char b;
};
int main(int argc, char const *argv[])
{
union demon d1;
d1.a=0x12345678;
//输出0x12为大端存储;输出0x78为小端存储
printf("%#x\n",d1.b);
return 0;
}
标签:小端,char,存储,int,内存空间,----,地址,大端 From: https://blog.csdn.net/D1557329860/article/details/140236945在联合体中定义一个char 类型的变量和int类型的变量,利用二者所占同一段存储空间,可以通过引用联合体变量中的成员访问char 类型的数据,取出一个字节的内容。