内存储器为什么会存在大小端两种模式

最近在了解大小端模式,一直不明白为什么内存要存在两种存储数据的模式,为什么不只用我们一般好理解的小端模式(低位保存在低地址,高位保存在高地址),看了一些文章几乎都是像下面这样写的,看了还是不明白,希望高手解释解释,谢谢!

为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 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处理器还可以由硬件来选择是大端模式还是小端模式。

------解决思路----------------------

就算先有小端,也无法阻止别人开发大端。因为幸亏一条线只有两个端,所以只有大小端。就像任天堂、playstation、X-box。就像GSM、CDMA,就像ANSI、DIN、ISO、GB、JIS,就像华为、小米、锤子……

生命会充满它能找到的所有空间。这是生物的本能。

------解决思路----------------------

就像计量单位有英制公制,汽车有左舵右舵,一开始没有统一标准,就只好双轨并用了。最开始应该是硬件实现上各有优势,所以沿用下来了

------解决思路----------------------

都是人自己想出来的   如果一开始规定好也就好了

------解决思路----------------------

芯片还是好说一点了,最讨厌的是网络数据,不知道要多花多少时间去搞这个顺序.

------解决思路----------------------

二选一,有人选 1,有人选 2 ,没有为什么

------解决思路----------------------

字节序


详解大端模式和小端模式

------解决思路----------------------

只能说, 总有人喜欢与从不同吧~

------解决思路----------------------

大小端和CPU有关系,CISC(复杂指令集)CPU一般使用小端数据格式,RISC一般使用大端数据格式

------解决思路----------------------

这就是一种约定熟成的概念,理解后自己选择使用就可以,这就像公理一样,我们要做的是应用。

------解决思路----------------------

两者有相应应用优势,作为一种规则约定俗称

------解决思路----------------------

这个问题没有为什么,既然有大端就一定会有小端啊。

------解决思路----------------------

还是比较喜欢使用小端系统,可KeilC 51却是大端的

------解决思路----------------------

与硬件处理数据的安排有关。

其实,不仅仅有这两种模式。我们的安全芯片大数模运算加速器(用于 RSA, ECC 等密码算法),采用的是双字内部大端格式,双字之间(整个的串)小端模式的所谓“内部格式”。

例如,大端数据 00112233 44556677 8899AABB CCDDEEFF,内部格式就是 CCDDEEFF 8899AABB 44556677 00112233。这完全是为了加速硬件操作而设计的。

实际上,在芯片外部的数据传递过程中,大多数的标准还是规定为大端格式。即最高比特最先发送。看一下各种接口标准就知道了。

永不止步步 发表于01-04 10:37 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:363791个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号