专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
DSP
大端模式和小端模式的区别
2019-07-13 15:07
发布
生成海报
站内文章
/
DSP
16787
0
985
1、什么是大端和小端?
1) 大端模式
:
就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
2) 小端模式:是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
举一个例子,比如数字0x12 34 56 78在内存中(
假设从地址0x4000开始存放)
的表示形式为:
内存地址
小端模式存放内容
大端模式存放内容
0x4000
0x78
0x12
0x4001
0x56
0x34
0x4002
0x34
0x56
0x4003
0x12
0x78
2、为什么要采用大端和小端?
这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于 8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如果将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。例如一个16bit的short型x,在内存中的地址为0x0010,x的值为0x1122,那么0x11为高字节,0x22为低字节。对于大端模式,就将0x11放在低地址中,即0x0010中,0x22放在高地址中,即0x0011中。小端模式,刚好相反。我们常用的X86结构是小端模式,而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。
3、怎么实现处理器是大端还是小端?
解题思想:
用一个整型变量保存一个初值,然后在用一个指针指向这个变量的首地址,在判断指针首地址里面的值是否为0x12或者末尾地址里面的值,这样就可以判断出当前的机器是大端模式还是小端模式。
图1 程序源代码
其运行结果如图2所示:
图2 运行结果
从上面的输出结果可以看出,整型数a的高位放在较小地址里面,地址低位放在较大地址里面,所以也就看以判断出当前机器是大端模式了。
Ta的文章
更多
>>
大端模式和小端模式的区别
0 个评论
单片机C语言代码-代码格式
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮