大小端模式模式实测

        大端模式,是指在内存的低地址中保存数据的高字节;而小端模式,是指在内存的低地址中保存数据的低字节。

分析可知1:既然数据分高字节、低字节,说明只有数据格式是2字节以上的,才有大小端模式,比如word、dword等;而byte类型数据是不分大小端模式的。

分析可知2:有分析1可知,byte类型数据是不分大小端模式,则数据格式都是统一的。即,地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。这对于大小端都是统一的格式。

         这些有点类似CAN报文:只要是跨了2个即以上字节数的CAN报文,都要考虑是Intel格式,还是Motorola格式,此时Intel格式就像小端;Motorola格式,就像大端;

Intel格式:

 

Motorola MSB格式:

 

Motorola LSB格式:

举例

下面以unsigned int value = 0x12345678为例,分别看看在两种字节序下其存储情况,我们可以用unsigned char buf[4]来表示value

Big-Endian: 低地址存放高字节,如下:

低地址

---------------

buf[0] (0x12) -- 高字节

buf[1] (0x34)

buf[2] (0x56)

buf[3] (0x78) -- 低字节

---------------

高地址

 

Little-Endian: 低地址存放低位,如下:

低地址

--------------

buf[0] (0x78) -- 低字节

buf[1] (0x56)

buf[2] (0x34)

buf[3] (0x12) -- 高字节

---------------

高地址

 

         此外,对于Motorola MSB和Motorola LSB的区别,可以参见上图,两者在数据的分布和处理上没有区别,唯一的区别在于对“start bit”的叫法上。比如一个12bit的数字,采用Motorola MSB和Motorola LSB格式,都是分布在从bit8~bit11、bit16~bit23的地址上,但是Motorola MSB格式说start bit为msb所在的位地址,所以为start bit:11;但是Motorola LSB格式说start bit为lsb所在的位地址,所以为start bit:16。(Intel的start bit都是按lsb所在的bit地址,所以上图中Intel的start bit:12。)

 

如果上述没有讲清楚,还有更为详细的帖子,见如下链接:Intel格式与Motorola格式的区别

https://blog.csdn.net/bingdianlanxin/article/details/41522373?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-1-41522373.nonecase&utm_term=motorola%E9%AB%98%E4%BD%8D%E4%BD%8E%E4%BD%8D&spm=1000.2123.3001.4430

如有侵权请联系,谢谢

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值