大端 小端

想看看苹果系统的数据存储是大端存储还是小端存储:

首先小端,就是把低位存放在低地址。如0x 12345678,这个32位的十六进制数,从高位到低位依次是 0x 12, 0x 34,0x 56,0x 78;采用小端方式:最低为 0x 78 在最前面,故而内存中从低地址到高地状依次是0x 78,0x 56, 0x 34, 0x 12;

大端方式亦然。比较符合人的理解,高位在内存中的低地址,故而内存中从低地址到高地状依次是0x 12,0x 34, 0x 56, 0x 78;

很简单,写一个union ,联合里的数据类型公用一块内存,不同时间只能有一种数据类型,我们定义一个包含int 类型和char 类型的联合,给它赋值一个int i = 1;然后查看char 类型的ch 的值,如果是小端方式存储,内存中从低地址到高地状依次(0x 01,0x 00,0x 00,0x 00),那么,char 类型的ch 截取低地址的0x 01。反之,大端内存中从低地址到高地状依次(0x 00,0x 00,0x 00,0x 01),会截取到 低地址的0x 00;

地址偏移

        大端模式                   小端模式

0x00    12OP0                 78OP3

0x01    34OP1                 56OP2

0x02    56OP2                 34OP1

0x03    78OP3                 12OP0

 

复制代码
 1 //判断系统大小端存储的方法
 2 int checkSystem() {
 3     union check{
 4         int i;
 5         char ch;
 6     } c;
 7     c.i = 1;
 8     return (c.ch == 1);// 0x 01 00 00 00
 9 }
10 int main(int argc, const char * argv[]) {
11     int check = checkSystem();
12     if (check == 1) {
13         printf("小端模式存储\n");//
14     }else {
15         printf("大端模式存储\n");
16     }
17     
18     return 0;
19 }
复制代码

结果发现苹果采用小端方式存储数据。

 

posted @   wjwdive  阅读(320)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示