为何会有大小端模式之分呢?这是由于在计算机系统中,咱们是以字节为单位的,每一个地址单元都对应着一个字节,一个字节为
8bit
。可是在C语言中除了8bit
的char
以外,还有16bit
的short型
,32bit
的long型
(要看具体的编译器),另外,对于位数大于8位
的处理器,例如16位
或者32位
的处理器,因为寄存器宽度
大于一个字节
,那么必然存在着一个如何将多个字节安排的问题。所以就致使了大端存储模式
和小端存储模式
。markdown
CPU设计
、编译器的实现
都有关系,但就像吃鸡蛋无论是从大端开始打碎,仍是小端开始打碎,数据储存顺序的分歧并不会影响实际的数据读取
;咱们以16位宽的数0x1234
举例假设他们的起始地址:0X6000;app
内存地址 | 0X6000 | 0X6001 |
---|---|---|
存放内容 | 0X34 | 0X12 |
读取时从右向左读;ide
内存地址 | 0X6000 | 0X6001 |
---|---|---|
存放内容 | 0X12 | 0X34 |
读取时从左向右读;ui