【前言】大家好,我是Catzzz666,一个一心让大家变强的博主。废话不说,让我们进入今天的正题。

大小端的引入:

我们先来看这样一段代码:

在内存中我们创建了局部变量a,那么a在内存中又是如何存储的呢?

这时就需要理解大小端字节序存储的概念了。

大端字节序存储:数据的低位数据存储在高地址处,高位数据存储在低地址处。

小端字节序存储:数据的低位数据存储在低地址处,高位数据存储在高地址处。

这里有很多小伙伴会问了,我们知道低地址和高地址,那么什么是低地址数据,什么又是高地址数据呢?

这里我们通过一个例子来更好的理解。

就像在十进制中个位、十位、百位、千位等等一样,从个位->十位->百位...就是从高位到低位。

了解了什么是大小端字节序存储,我们先来看这样一个存储方式,判断a在内存中是大端字节序存储还是小端字节序存储。

在VS2019中,从左到右,字节是不断增大的:

这里可以看出a的低位数据44存储在了低地址处,所以这其实是一个小端字节序存储。

了解了什么是大小端字节序存储,我们来看百度的这道笔试题:

百度2015年系统工程师笔试题(10分):

请简述大端字节序和小端字节序的概念,设计一个小程序来判断当前机器的字节序。

关于大小端字节序的概念,在前面我们已经介绍过了,接下来我们来设计程序。

思考:可以通过创建一个局部变量,并且赋值为1,那么以十六进制展示的话就是0x00000001;

如果当前机器是端字节序存储的话存储的就是01000000

如果当前机器是小端字节序存储的话存储的就是00000001

接下来就是找到字节的地址(使用指针),将a的地址找出强制转化为char*,然后进行解引用操作找到存储的数据,如果取出的内容是0,那么该机器的存储方式为大端,否则为小端。

代码实现:

//代码一
#include <stdio.h>int main()
{int a = 1;char* p = (char*)&a;  //将a的地址强制转化为char*并存储在p中if (*p == 1){printf("小端\n");}else{printf("大端\n");}return 0;
}

这种代码主要是便于我们理解,在面试的时候一般我们都是通过函数的形式来进行判断、进行提交,所以现在需要对代码一进行改善:(使用函数)

#include <stdio.h>int judge()
{int a = 1;return *(char*)&a;//函数的返回值
}int main()
{//使用ret来接收函数的返回值int ret = judge();return 0;
}

【C语言】大小端字节序判断 常见笔试题型相关推荐

  1. 大小端字节序介绍以及判断当前环境字节序的程序【C语言】

    文章目录 1.大小端字节序介绍 2. 判断当前环境的字节序程序 1.大小端字节序介绍 首先我们先来介绍什么是大端字节序,什么是小端字节序: 大小端字节序指的是数据在电脑上存储的字节顺序 小端字节序存储 ...

  2. 通信大小端字节序相关问题总结

    [备注:本文主要是将最新box项目中,遇到的问题做以总结梳理,便于加深印象和后续查阅.本文相关资料主要来源于网络,包括转载的一些资料] 遇到问题: 1.何为大.小端存储. 2.若协议中提及" ...

  3. java 大小端字节序_理解大小端字节序

    学过编程的人都应该知道大小端字节序的概念,但是很多时候,总是把他们弄混,这是整理出来的一份很简单的方式理解字节序的文章,废话不多说,这里直接入正题. 什么是字节序? 字节序,简单来说,就是指的超过一个 ...

  4. Java字节序与大小端转换_什么时候要进行大小端字节序的转换? | 学步园

    什么时候要进行大小端字节序的转换? 通过socket收发数据(在intel的处理器上), 什么时候要进行大小端字节序的转换? 比如发一个int型的数据出去,要不要进行转换? 还是两端一样,就不用考虑转 ...

  5. 什么时候要进行大小端字节序的转换?

    什么时候要进行大小端字节序的转换? 通过socket收发数据(在intel的处理器上), 什么时候要进行大小端字节序的转换? 比如发一个int型的数据出去,要不要进行转换? 还是两端一样,就不用考虑转 ...

  6. 大小端字节序知识详解

     计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian). 举例: 数值0x2211使用两个字节储存:高位字节是0x22,低位字节是0x11. 大 ...

  7. 网络编程大小端字节序

    刚接触网络编程那会因为是同一种语言之间做数据交互所以并没有出现大小端问题,到后来鄙人因机缘巧合进入物联网行业然后就发现打开了新世界.(设备终端大多是嵌入式设备用的C,服务端用的是java) 然后我的状 ...

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

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

  9. 对于类对象模型的理解(类大小计算+大小端字节序)

    类对象模型 如何理解类与对象 类: 通俗理解,类相当于一个模型框架,限定了类有哪些成员变量,但从底层来看,内存并没有分配实际的物理空间来存储类 对象: 类对象即为类的具体描述,当类对象进行实例化过程中 ...

最新文章

  1. JavaWeb-SpringBoot_一个类实现腾讯云SDK发送短信
  2. 5G的频谱效率,到底有多高
  3. Microsoft Visual c++简介
  4. .NET技术之美-网络编程
  5. java 人物属性
  6. LeetCode 1140. 石子游戏 II(DP)*
  7. 滤镜应用——制作车辆行驶效果
  8. 周志华-机器学习西瓜书-第三章习题3.3 编程实现对率回归
  9. Android:Activity(三):启动其他Activity并返回结果
  10. 定投计算器和年化利率计算器
  11. Linux SD卡驱动开发
  12. 完整版《贴心萌宝荒唐爹》小说全文阅读
  13. 最新版火车头织梦内容发布规则_火车头采集 - 织梦图集发布模块的制作
  14. 【程序人生】外包公司派遣到网易,上班地点网易大厦,转正后工资8k-10k,13薪,包三餐,值得去吗?
  15. 养生年龄的早龄化一一朱乐睿教授
  16. j3455安装linux 4k驱动,nas-j3455kvm安装win10及集成显卡直通
  17. python操作Excel设置打印标题时碰到的一个小问题
  18. html5制作坦克大战
  19. DRV8814PWPR
  20. vs2017c语言程序打包,VS2017桌面应用程序打包成.msi或者.exe

热门文章

  1. 招聘大师v6.7.2
  2. 信创环境下达梦数据库唯一索引异常无法拦截DuplicateKeyException
  3. 新人入职,都用这三招,让你安全度过试用期
  4. KISSY - Keep It Simple Stupid, Short Sweet, Slim Sexy...
  5. Python用雷达图展示某学生成绩问题/2020年12月
  6. js将数组中的字符串按照第二个字符的大小排序(sort排序)
  7. 幸运的是,我的老师很严厉~
  8. 1.7Web前端基础笔记
  9. 【MySQL - 5】约束是什么?非空约束、唯一约束、主键约束、外键约束有什么作用?
  10. php批量替换文件内容,Shell脚本实现批量替换文件内容