嵌入式面试之————大小端

本文深入探讨了嵌入式系统中大端和小端的存储方式,解释了它们在不同处理器架构如PowerPC、KeilC51、x86、ARM和DSP上的应用。通过具体实例说明了大端和小端在内存地址上的数据存储顺序,并提供了一个判断大小端的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

嵌入式面试之————大小端
当跨平台或者网络通信的时候,总需要考虑大小端通信。
大端:LSB, least significant byte 。常用于power pc ,keil C51。
小端:MSB,most significant byte。常用于x86,ARM,DSP。

大端:低高高低。地地址对应高字节;
类似字符串顺序处理,地址从小向大增加,数据从高位往地位放。大端符合人类正常思维。
小端:低低高高。低地址对应低字节;
符合逻辑思维,高地址权值高,低地址权值低。小端利于计算机处理。

数据:高字节在前,低字节在后。左高右低。
地址:低地址在前,高地址在后,左低右高。

在32位机器中,char 1字节,short2字节,int4字节。假设有int型数据,0x12345678,其中12是最高字节,78是低字节。
在假设存储地址为1000开始,则排列如下:
这里写图片描述

常见题型:
1:写代码判断大小端?
2:32位大端机器上,g_ulRet数值为多少?

typedef unsigned int uint;
uint g_ulRet = 0xFFFFFFFF;

uchar funB()
{
	uint tmp = 0x12345678;
	return tmp;
}

void funA()
{
	g_ulRet = funB();
}

解析:
int转换为char型会产生截断,假设地址从0x0000开始,在大端地址0x0000-0003开始,依次存放数据12345678,。tmp存放地址为0000,转换为char类型首地址也为0000,又因为char型是一个字节,强转后char类型,结果为12。

### 嵌入式Linux面试问题及答案 #### 主要作用 Linux驱动的主要作用是在操作系统硬件之间建立桥梁,使得应用程序可以通过标准接口访问特定的硬件设备。这种机制不仅简化了应用层编程,还增强了系统的稳定性可移植性[^1]。 #### 对嵌入式Linux的理解 嵌入式Linux是指专门为嵌入式系统优化过的Linux版本,其特点在于能适应有限内存、处理器速度较慢等资源约束条件下的工作环境。这类操作系统常被应用于各种专用设备中,比如路由器、智能家居控制器或是工业自动化装置里。通过裁剪不必要的组件服务,可以显著减少启动时间占用空间,从而更好地满足实时响应需求并提升整体效率[^2]。 #### 同步原语的区别 在讨论到进程间通信或者并发控制时,经常会遇到互斥量与信号量这两个概念。两者都是用来解决资源共享冲突的有效工具,但是它们有着不同的应用场景:互斥量主要用于保护临界区内的单一资源不被同时修改;而信号量除了具备相同功能外还能管理一组同类型的对象,并允许一定数量的任务共同持有这些资源而不发生竞争状况。特别地,当信号量表示的是二元状态(即只能取0或1)的时候,则退化成了一种特殊的互斥锁形式[^3]。 #### Shell命令理解 对于给定的选择题选项来看,“`ls shell.sh > shell2.sh`”这条指令的作用是从当前目录下读取名为`shell.sh`文件的内容并将之重定向输出至另一个新创建出来的叫做`shell2.sh`的新文档当中去;相比之下,“`ll shell.sh > shell2.sh`”虽然看起来相似但实际上执行效果有所区别——因为前者实际上调用了带有颜色高亮显示等功能增强版列表视图(`ll`)而非普通的列出详情模式(`ls -l`),所以最终产生的结果也会有所不同[^4]。 ```bash # 正确复制文件内容的方式应该是这样的: cat shell.sh > shell2.sh ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小博时代

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值