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

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

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");
}

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

五.作用


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

相关文章
|
2月前
|
算法 前端开发 Java
数据结构与算法学习四:单链表面试题,新浪、腾讯【有难度】、百度面试题
这篇文章总结了单链表的常见面试题,并提供了详细的问题分析、思路分析以及Java代码实现,包括求单链表中有效节点的个数、查找单链表中的倒数第k个节点、单链表的反转以及从尾到头打印单链表等题目。
37 1
数据结构与算法学习四:单链表面试题,新浪、腾讯【有难度】、百度面试题
|
2月前
|
负载均衡 算法 Java
腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
尼恩,一位资深架构师,分享了关于负载均衡及其策略的深入解析,特别是基于权重的负载均衡策略。文章不仅介绍了Nginx的五大负载均衡策略,如轮询、加权轮询、IP哈希、最少连接数等,还提供了手写加权轮询算法的Java实现示例。通过这些内容,尼恩帮助读者系统化理解负载均衡技术,提升面试竞争力,实现技术上的“肌肉展示”。此外,他还提供了丰富的技术资料和面试指导,助力求职者在大厂面试中脱颖而出。
腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
|
7月前
|
数据采集 数据挖掘 关系型数据库
2024年5分钟就能完成的5个Python小项目,赶紧拿去玩玩吧(2),2024年最新腾讯面试题
2024年5分钟就能完成的5个Python小项目,赶紧拿去玩玩吧(2),2024年最新腾讯面试题
2024年5分钟就能完成的5个Python小项目,赶紧拿去玩玩吧(2),2024年最新腾讯面试题
|
5月前
|
存储 Java 程序员
Java面试题:方法区在JVM中存储什么内容?它与堆内存有何不同?
Java面试题:方法区在JVM中存储什么内容?它与堆内存有何不同?
82 10
|
5月前
|
存储 设计模式 监控
Java面试题:如何在不牺牲性能的前提下,实现一个线程安全的单例模式?如何在生产者-消费者模式中平衡生产和消费的速度?Java内存模型规定了变量在内存中的存储和线程间的交互规则
Java面试题:如何在不牺牲性能的前提下,实现一个线程安全的单例模式?如何在生产者-消费者模式中平衡生产和消费的速度?Java内存模型规定了变量在内存中的存储和线程间的交互规则
53 0
|
5月前
|
Python
155. 最小栈 力扣 python 空间换时间 o(1) 腾讯面试题
155. 最小栈 力扣 python 空间换时间 o(1) 腾讯面试题
|
7月前
|
移动开发 前端开发 JavaScript
WebPack面试题总结(1),2024华为Web前端面试真题
WebPack面试题总结(1),2024华为Web前端面试真题
|
7月前
|
XML 存储 Android开发
Android技能树 — Fragment总体小结,2024年最新腾讯面试gm
Android技能树 — Fragment总体小结,2024年最新腾讯面试gm
|
7月前
|
消息中间件 监控 Java
腾讯面试:如何提升Kafka吞吐量?
Kafka 是一个分布式流处理平台和消息系统,用于构建实时数据管道和流应用。它最初由 LinkedIn 开发,后来成为 Apache 软件基金会的顶级项目。 Kafka 特点是**高吞吐量、分布式架构、支持持久化、集群水平扩展和消费组消息消费**,具体来说: 1. **高吞吐量**:Kafka 具有高性能和低延迟的特性,能够处理大规模数据,并支持每秒数百万条消息的高吞吐量。 2. **分布式架构**:Kafka 采用分布式架构,可以水平扩展,多个节点之间能够实现负载均衡和高可用性。 3. **可持久化**:Kafka 将消息持久化到磁盘中,保证消息的可靠性,即使消费者下线或出现故障,消
96 0
|
7月前
|
Android开发
Android Jetpack架构开发组件化应用实战,字节跳动+阿里+华为+腾讯等大厂Android面试题
Android Jetpack架构开发组件化应用实战,字节跳动+阿里+华为+腾讯等大厂Android面试题

热门文章

最新文章