其他分享
首页 > 其他分享> > 大端与小端

大端与小端

作者:互联网

在乔纳森·斯威夫特的著名讽刺小说《格列夫游记》中,小人国内部分裂成Big-endian和Little-endian两派,区别在于一派要求从鸡蛋的大头把鸡蛋打破,另一派要求从鸡蛋的小头把鸡蛋打破。斯威夫特借以讽刺英国的政党之争,在计算机工业中指数据储存顺序的分歧

大端与小端

在这里插入图片描述

大端

数据的高字节,保存在内存的低地址中,数据的低字节,保存在内存的高地址中,而数据的取出使用是从低地址开始的,所以大端数据相当于从高字节取出使用

小端

数据的低字节,保存在内存的低地址中,数据的高字节,保存在内存的高地址中,而数据的取出使用是从低地址开始的,所以小端数据相当于从低字节取出使用

为什么会有大小端模式之分

因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于 8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式

用法

Intel的80x86芯片是唯一还在坚持使用小端的芯片,所以使用此芯片的电脑采用小端存储,而网络上传输的数据采用的是大端,所以需要大小端转换

word length = 0x1234; //电脑上定义的变量length是小端存储
word len = swapWord(length); //通过方法swapWord()变成大端存储,len就是大端存储,它就可以在网络中使用  

注意


标签:小端,存储,字节,地址,大端,byte
来源: https://blog.csdn.net/wjz110201/article/details/115010373