【面试】百度面试题-求当前机器的字节序是什么?
创始人
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、考点总结

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

相关内容

热门资讯

罗永浩录音还未公布,华与华兄弟... 澎湃新闻记者 戴高城12月22日,读客文化(301025.SZ)的一纸停牌公告,将华楠、华杉兄弟推上...
万亿长沙银行换帅,“70后”女... 出品|达摩财经12月19日,长沙银行(601577.SH)发布公告称,该行董事会收到董事长赵小中的辞...
54岁恒隆集团CEO卢韦柏官宣... 红星资本局12月22日消息,日前,恒隆集团(00010.HK)、恒隆地产(00101.HK)联合公告...
智谱、MiniMax冲刺港交所... 出品|达摩财经AI独角兽正加速冲向资本市场,争夺“大模型第一股”的位置。12月21日,通用人工智能(...
吉利汽车与极氪整合完成 新京报贝壳财经讯 12月22日,吉利汽车控股有限公司(0175.HK)(简称“吉利汽车”)发布公告,...