字节序、大小端

发布时间 2024-01-05 16:03:07作者: zk10152003

机器存储方式根据字节序分为大端存储和小端存储。字节序,顾名思义,是指多个字节间的排列顺序。
举个栗子
存储数16进制0X12345678占了4个字节,从左到右是二进制的高位到低位。1234就是高位,5678就是低位(字节高低位,也可以叫做二进制的高低位)
数据存储在内存中,需要先划分一个区域给数据保存buffer[0]、buffer[1]、buffer[2]、...,其中0就是低地址,2就是高地址

二进制的低位存储在内存的高位,二进制的高位存储在内存的低位,称之为大端存储
二进制的低位存储在内存的低位,二进制的高位存储在内存的高位,称之为小端存储

大端存储
buffer[3] 0X78
buffer[2] 0X56
buffer[1] 0X34
buffer[0] 0X12

小端存储
buffer[3] 0X12
buffer[2] 0X34
buffer[1] 0X56
buffer[0] 0X78

字节序按应用场景分为网络字节序、主机字节序
网络字节序是大端字节序,是确定的
主机字节序由CPU架构决定,可能是小端、也可能是大端

那么,为什么要区分大小端呢? 计算机电路先处理低位字节,效率比较高,因为计算都是从低位开始的,所以,计算机的内部处理都是小端字节序。
而大端序存储,由于符号位在高位,因此对于数据正负或大小的判断也就方便许多。另外,大端序也更符合人们的读写习惯。所以,除了计算机的内部处理,其他的场合几乎都是大端字节序,比如网络传输和文件储存。