分享

大小端存储

 冒险的K 2021-09-16

0. 问题引入

  若定义 : int a = 1; 我们知道 a 在内存存储时 应该为 0x 00 00 00 01,可是看内存里存的是 0x 01 00 00 00,这就是大小端存储的问题。

  

1.什么是大小端存储

  高字节和低字节:

  

  高地址和低地址:

  

大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。

  小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。

  

2 如何测试机器是大端模式还是小端模式

  1,利用指针来测试

 1 #include 2  3 int main() 4 { 5     int a = 1; 6     char *p = (char*)&a; // 用char型指针访问第一个字节的内容 7  8     if (*p == 1) 9     {10         printf("小端");11     }12     else13     {14         printf("大端");15     }16     return 0;17 }

  2,利用联合体的性质

 1 #include 2 int check_system() 3 { 4     union Un //联合体共用一块内存 5     { 6         char c; 7         int i; 8     }u; 9     u.i = 1; // 此时存入一个int型的值10     return u.c; // 只读取一个字节 如果是 1 ,为小端,0为大端。11 }12 int main()13 {14     int a = check_system();15     if (a == 1)16     {17         printf("小端");18     }19     else20     {21         printf("大端");22     }23     return 0;24 }
 www.bdsoba.com

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多