CPU和大小端

1 大小端的来源

存储器中对数据的存储是以字节(Byte)为基本单位的,

当CPU处理的位数和数据类型的宽度不一致或者处理的位数大于一个字节的时候,需要考虑处理数据的存顺序。

举例来说:

1)32位的处理器,存储8位的char型数据;

2)32位的处理器,存储32位的int型数据;

而大小端只是表示存储数据的两种顺序方式,默认内存的读写方式是从低位到高位,处理数据是低位在地址低位,还是高位在地址低位,分为小端和大端两种模式。

因为最开始制定时,没有统一的标准,因而导致了大端和小端两种模式。

同时,什么时候需要注意大端和小端模式呢?

一般是涉及到按位对数据进行处理、网络数据在不同CPU上传输的时候,考虑解析数据的顺序时候;

2 大小端的规则

大端模式:指数据的高字节保存在内存的低地址中
小端模式:指数据的高字节保存在内存的高地址中

1)32位的处理器,存储8位的char型数据;

假设char变量可以存储的地址范围为0x00000001-0x00000004(32位系统中00000000代表32位),那么char是存储在0x00000001那里还是0x00000004那里呢?

很显然,如果CPU是小端模式,那么char是存储在0x00000001当中,如果是大端模式,那么char是存储在0x00000004当中。

2)32位系统,存储32位的int型数据(0x12345678);

大端(高尾端)大端字节序 也被用于 TCP/IP协议上,因此也称作网络字节序。

内存地址    数据
0x0000    0x12
0x0001    0x34
0x0002    0x56
0x0003    0x78

小端(低尾端)
低地址存放低字节数据

内存地址    数据
0x0000    0x78
0x0001    0x56
0x0002    0x34
0x0003    0x12

3 主流CPU的大小端模式

大小端主要由CPU 决定,但是如ARM可以选择大小端模式,准确说是由运行环境决定大小端模式。

可以通过向内存写多字节数据,然后按照内存由小到大的数据读取,判断大小端模式。

1)就CPU架构而言

小端模式:STM32 X86 
大端模式:PowerPC IBM Sun
ARM 既可以是小端也可以是大端。

Intel的80x86系列芯片是唯一还在坚持使用小端的芯片,ARM芯片默认采用小端,但可以切换为大端;而MIPS等芯片要么采用全部大端的方式储存,要么提供选项支持大端——可以在大小端之间切换。

2) 一些国产CPU的大小端模式

待补充


参考文章:https://blog.csdn.net/qq_38158479/article/details/101562835

                  https://blog.csdn.net/weixin_37127273/article/details/84023818

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值