大小端字节序(存储)——百度,华为,腾讯,深信服大厂面试题(详解)
如果你听懂了我所讲述的内容我们离大厂offer又进了一步!!!
一.介绍
维基百科:字节顺序,又称端序或尾序(英语:Endianness),在计算机科学领域中,指电脑内存中或在数字通信链路中,组成多字节的字的字节的排列顺序
这个的意思就是数据在存储的时候字节的存储顺序不同叫做字节顺序。
二.种类
我们都知道内存的作用就是存储数据,而存储的方式在不同的操作系统上方式也是不同的所以
字节序经常被分为两类:
1. Big-Endian(大端):高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
2.Little-Endian(小端):低位字节排放在内存的低地址端,高位字节排放在内存的高地址端
三. 实例讲解
我们大概了解下就好下面看实例:
首先我们了解下内存的存储方式,
栈区的习惯是:先使用高地址再使用低地址
数组的习惯:随着数组下标的增长,地址是由低到高变化的
(这里的变量a,b是存放在栈区的)
a是整型占内存的4个字节,二进制的有效位为10是低位,我们发现a再内存中是02 00 00 00存储而不是00 00 00 02,而根据我们的 低位字节排放在内存的低地址端,高位字节排放在内存的高地址端可知,此操作系统是小端存储模式
我们再看b也是06 00 00 00排列,从低地址到高地址存放由低端到高端数组的存储
四.证明
我们可以测试出它的存储模式,但是面试官让你敲出一个程序来判断是哪种存储模式我们该怎么办?
思路:我们要想判断它的类型那我们可以拿出这个数据的第一个字节(8byt)就可以判断他的类型了
我们只要得到最低的1字节的地址就可以解决问题
摸索方法:我们首先知道int存储类型是4个字节而char类型存储时1个字节,如果每次用取出int类型那会直接把这个值直接取出来而不能判断第一个字节存储的是什么,所以我们考虑将类型强转为char类型取出第一个字节来判断
我们用char指针p_a接受a强转类型的地址
#include<stdio.h>
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");}elseprintf("大端\n");
}
这样我们就可以判断它的存储类型了
五.作用
经过统一的存储方式这样我们可以加快内存的读存取极大的加快了代码运行的效率以及安全性。
大小端字节序(存储)——百度,华为,腾讯,深信服大厂面试题(详解)相关推荐
- 【C语言】大小端字节序判断 常见笔试题型
[前言]大家好,我是Catzzz666,一个一心让大家变强的博主.废话不说,让我们进入今天的正题. 大小端的引入: 我们先来看这样一段代码: 在内存中我们创建了局部变量a,那么a在内存中又是如何存储的 ...
- 大小端字节序介绍以及判断当前环境字节序的程序【C语言】
文章目录 1.大小端字节序介绍 2. 判断当前环境的字节序程序 1.大小端字节序介绍 首先我们先来介绍什么是大端字节序,什么是小端字节序: 大小端字节序指的是数据在电脑上存储的字节顺序 小端字节序存储 ...
- java 大小端字节序_理解大小端字节序
学过编程的人都应该知道大小端字节序的概念,但是很多时候,总是把他们弄混,这是整理出来的一份很简单的方式理解字节序的文章,废话不多说,这里直接入正题. 什么是字节序? 字节序,简单来说,就是指的超过一个 ...
- 大小端字节序知识详解
计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian). 举例: 数值0x2211使用两个字节储存:高位字节是0x22,低位字节是0x11. 大 ...
- 通信大小端字节序相关问题总结
[备注:本文主要是将最新box项目中,遇到的问题做以总结梳理,便于加深印象和后续查阅.本文相关资料主要来源于网络,包括转载的一些资料] 遇到问题: 1.何为大.小端存储. 2.若协议中提及" ...
- Java字节序与大小端转换_什么时候要进行大小端字节序的转换? | 学步园
什么时候要进行大小端字节序的转换? 通过socket收发数据(在intel的处理器上), 什么时候要进行大小端字节序的转换? 比如发一个int型的数据出去,要不要进行转换? 还是两端一样,就不用考虑转 ...
- 什么时候要进行大小端字节序的转换?
什么时候要进行大小端字节序的转换? 通过socket收发数据(在intel的处理器上), 什么时候要进行大小端字节序的转换? 比如发一个int型的数据出去,要不要进行转换? 还是两端一样,就不用考虑转 ...
- c语言 read 文件字节没超过数组大小时会怎样_剑指信奥 | C 语言之信奥试题详解(四)...
趣乐博思剑指信奥系列 ❝ 趣乐博思剑指信奥系列,专门针对全国青少年信息学奥林匹克联赛 NOIP 而开展的专业教育方案.开设的课程有 C 语言基础,C++ 语言基础,算法设计入门与进阶,经典试题分析与详 ...
- 对于类对象模型的理解(类大小计算+大小端字节序)
类对象模型 如何理解类与对象 类: 通俗理解,类相当于一个模型框架,限定了类有哪些成员变量,但从底层来看,内存并没有分配实际的物理空间来存储类 对象: 类对象即为类的具体描述,当类对象进行实例化过程中 ...
最新文章
- java利用正则截取字符串中的数字
- shell脚本详解(十)——sed编辑器的使用方法
- ionic 返回上一页,并刷新父页面
- 图片资源加载路径分析以及netbeans打包java程序,并包含图片资源
- Java 中的PO VO DTO BO
- 《利用Python进行数据分析·第2版》第13章 Python建模库介绍
- Atitit 读取数据库的api orm SQL Builder sql对比 目录 1.1. 提高生产效率的 ORM 和 SQL Builder	1 1.2. SQL Builder 在 SQL
- 周记0053:0054
- 济南python编程培训机构排名
- Ubuntu下安装 rust和urdf-viz
- jwt的token要存mysql吗_认证的token不存到数据库
- 一个应用最广泛的营销分析工具
- 光线折射公式推导:Snell‘s Law
- java实现图片验证码_JAVA实现图片验证码
- Phonetic symbol 双元音 -- ɔɪ --(ɔi)
- 【SystemTap】SystemTap的疑问
- Linux-centos
- Java 生成图片验证码(包含全是字母、加减乘除、中文)3种方法
- 深度学习训练技巧总结
- 2021,一家民企的“奔富”答卷
热门文章
- 软件怎样作用于硬件!!?
- mc linux 水桶服务器下载,我的世界1.7.10水桶服务端游戏
- VSN与GitHub
- 批量上传视频到阿里云
- 高收益债券信用风险评估:预期损失率模型
- creator 跳跃弧线_(转)CocosCreator零基础制作游戏《极限跳跃》七、制作游戏结束场景并实现场景切换...
- php家教服务系统,基于PHP技术家教信息平台的设计与实现
- Win2008 R2服务器入站规则和安全策略简介
- 优化win2008桌面,使用AERO主题
- 英雄远征Erlang源码分析(7)-场景与副本