大小端字节序(存储)——百度,华为,腾讯,深信服大厂面试题(详解)

简介: 大小端字节序(存储)——百度,华为,腾讯,深信服大厂面试题(详解)

image.png

如果你听懂了我所讲述的内容我们离大厂offer又进了一步!!! 一.介绍 维基百科:字节顺序,又称端序或尾序(英语:Endianness),在计算机科学领域中,指电脑内存中或在数字通信链路中,组成多字节的字的字节的排列顺序

这个的意思就是数据在存储的时候字节的存储顺序不同叫做字节顺序。

二.种类 我们都知道内存的作用就是存储数据,而存储的方式在不同的操作系统上方式也是不同的所以

字节序经常被分为两类:

  1. Big-Endian(大端):高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。

 2.Little-Endian(小端):低位字节排放在内存的低地址端,高位字节排放在内存的高地址端

三. 实例讲解 我们大概了解下就好下面看实例:

首先我们了解下内存的存储方式,

栈区的习惯是:先使用高地址再使用低地址

数组的习惯:随着数组下标的增长,地址是由低到高变化的

(这里的变量a,b是存放在栈区的)

image.png

image.png

a是整型占内存的4个字节,二进制的有效位为10是低位,我们发现a再内存中是02 00 00 00存储而不是00 00 00 02,而根据我们的 低位字节排放在内存的低地址端,高位字节排放在内存的高地址端可知,此操作系统是小端存储模式

我们再看b也是06 00 00 00排列,从低地址到高地址存放由低端到高端数组的存储

image.png

四.证明 我们可以测试出它的存储模式,但是面试官让你敲出一个程序来判断是哪种存储模式我们该怎么办?

思路:我们要想判断它的类型那我们可以拿出这个数据的第一个字节(8byt)就可以判断他的类型了

image.png

我们只要得到最低的1字节的地址就可以解决问题

摸索方法:我们首先知道int存储类型是4个字节而char类型存储时1个字节,如果每次用取出int类型那会直接把这个值直接取出来而不能判断第一个字节存储的是什么,所以我们考虑将类型强转为char类型取出第一个字节来判断

我们用char指针p_a接受a强转类型的地址

int judge_str(char* p_a)
{
  if (*p_a)
  {
    return 1;
  }
  return 0;
}
int main()
{
  int a = 2;
  char* p_a = (char*)&a;
  int b=judge_str(p_a);
  if (b == 1)
  {
    printf("小端\n");
  }
  else
    printf("大端\n");
}

这样我们就可以判断它的存储类型了

五.作用


经过统一的存储方式这样我们可以加快内存的读存取极大的加快了代码运行的效率以及安全性。

相关文章
|
5月前
|
Java Linux 程序员
Linux平台中调试C/C++内存泄漏方法 (腾讯和MTK面试的时候问到的)
Linux平台中调试C/C++内存泄漏方法 (腾讯和MTK面试的时候问到的)
|
7月前
|
Java 关系型数据库 编译器
华为面试,说说“多态”
华为面试,说说“多态”
40 0
|
7月前
|
XML JavaScript Java
华为Java工程师面试题
华为Java工程师面试题
44 0
|
15天前
|
存储 缓存 安全
兄弟面试了百度,面试题分享一波
兄弟面试了百度,面试题分享一波
38 0
|
5月前
|
设计模式 算法 网络协议
社招offer-腾讯T9-70W年薪(面试经验分享)(上)
社招offer-腾讯T9-70W年薪(面试经验分享)
|
2月前
|
安全 算法 数据安全/隐私保护
腾讯面试官:工作两年了,这么简单的cisp题你都不会?
注册信息安全专业人员,是经中【国信息安全产品测评认证中心】实施的国家【认证】,对信息安全人员执业资质的认可。该证书是面向【信息安全】企业、信息安全咨询【服务机构】、信息安全【测评机构】、【政府机构】、社会各组织、团体、大专院校以及企事业单位中负责信息系统建设、运行维护和管理工作的信息安全专业人员所颁发的专业资质证书。
75 0
腾讯面试官:工作两年了,这么简单的cisp题你都不会?
|
2月前
|
C语言
腾讯面试真题(C语言)
腾讯面试真题(C语言)
|
3月前
|
存储 前端开发 JavaScript
【面试题】(简单粗暴点)百度一面,直接问痛我
【面试题】(简单粗暴点)百度一面,直接问痛我
|
4月前
|
存储 NoSQL 中间件
[中间件~大厂面试题] 腾讯三面,40亿的QQ号如何去重
[中间件~大厂面试题] 腾讯三面,40亿的QQ号如何去重
|
4月前
|
设计模式 算法 Java
腾讯Java高级岗180道面试真题,面试大厂拿45Koffer没问题!
一、数据结构与算法基础 · 说一下几种常见的排序算法和分别的复杂度。 · 用Java写一个冒泡排序算法 · 描述一下链式存储结构。 · 如何遍历一棵二叉树? · 倒排一个LinkedList。 · 用Java写一个递归遍历目录下面的所有文件。