【面试】百度面试题-求当前机器的字节序是什么?
创始人
2025-05-30 11:37:03

2015年百度面试题:编写程序,求当前机器的字节序是什么?

1、缘起

什么是字节序(Endian)? 字节序就是字节的存储顺序,即数据的高低位,存储在地址空间的高地址,还是存储在地址空间的低地址。我们把这种数据的存储行为称为数据的存储模式。数据的存储模式分为大端存储模式(Big-Endian)小端存储模式(Little-Endian),也叫做大端字节序小端字节序

1.1、大端字节序

  • 如果数据低位字节存储在内存的高地址,数据高位字节存储在内存的低地址,我们把这种数据存储模式称为数据大端存储模式或者网络存储模式
  • 套接字通信过程中操作的数据都是大端存储的,包括:接受/发送的数据、IP 地址、端口。

1.2、小端字节序

  • 如果数据低位字节存储在低地址,数据高位字节存储在高地址,我们这种数据存储模式称为数据小端(Little-Endian)存储模式或者主机存储模式
  • 我们使用的 PC 机,数据的存储模式默认是小端存储模式。
    在这里插入图片描述

2、代码

算法思想:就取一个字节的地址,进行比较。

#includeint main()
{int ret = CheckSystem();if (1 == ret){printf("小端\n");}else{printf("大端\n");}return 0;
}	int CheckSystem()
{int a = 1;return * (char*)&a;
}
  • 关键代码解释:

    ① int a = 1;
    定义了一个4个字节的空间,这个空间的名称为 a,a 中的值为 1,1 为十进制数;a 中的二进制值为 00000000 00000000 00000000 00000001,二进制值从左往右,数据位从高到底依次递减。
    在这里插入图片描述
    ② *(char*)&a
    因为 a 被定义为 4 个字节,所以用 char 强制类型转换,取 a 一个字节的地址( a 的首字节地址),查看其地址中存储的值,如果值为 1,则该机器数据存储模式为小端存储模式;如果值为 0,则该机器数据存储模式为大端存储模式。

3、考点总结

  • 数据的存储模式
  • 大端存储模式
  • 小端存储模式

相关内容

热门资讯

一汽豪掷37亿拿下零跑5%股权... 成立十周年之际,零跑宣告了和一汽的股权合作。12月29日,零跑汽车(下称“零跑”)于港交所公告,前一...
2026节点增长大会圆满收官,... 岁尾年初,AI早已跨越“概念验证”的青涩,全面挺进“产业重塑”的深水区。从生命科技的细胞工厂到穿梭城...
挑战年销量400万,零跑意欲撕... 在零跑汽车成立十周年之际,零跑迎来了又一位新的大股东——中国一汽。随着一汽的入股,这家新势力车企将携...
天箭科技可能“披星戴帽”,调减... 微成都报道 12月29日盘后,天箭科技(002977)发布重大风险提示公告。受军品价格调整影响,公司...
合见工软启动上市辅导,估值13... 红星资本局12月29日消息,日前,证监会官网显示,国产EDA头部企业上海合见工业软件集团股份有限公司...