字节序与位序切实是统一的;
依据计算机设计的架构形式不同,等闲CPU(和一些外设)判别为大端序和小端序,另外也有所谓混杂序的装备存在,这种装备在这里不做琢磨
所谓大端序,即便当机器沿着地址从低地址向高地址读的时候,第一个读取到的字节byte或位bit
都是从最高的一位(MSB:Most Significant Bit,最高管用位)或最高的一个byte;
(本文所描写内容均不琢磨补码导致的切实存储数据改变)
如下所示
地址低位————>地址增长方向 ————>地址高位
指针指在第一个bit处,当 读取的时候顺次读入1000111101010000 (顺次读入 0x8f, 0x50)这个16位的数即便0x8f50
而低端序对应的16位数0x8f50 的存储措施为:
地址低位————>地址增长方向 ————>地址高位
数据低位
读取的时候顺次读入0 0 0 0 1 0 1 0 1 1 1 1 0 0 0 1;
从上能够看出从大端序到小端序,发生了两个改变:
1、字节序列编排措施的改变 ;高低互换;
2、位序发生了改变,高低互换;
测验过程如下:
#include <stdlib.h>
#include <stdio.h>
int main ()
{
}
小端序机器上运行收获(x86):
sizeof int : 4
bfcfd470 - 78 bfcfd471 - 56 bfcfd472 - 34 bfcfd473 – 12
地址是添置的,输出时从第四字节(起码)到第一字节(最高)
大端序机器上运行收获(powerpc 51xx):
sizeof int : 4
2ff22c30 - 12 2ff22c31 - 34 2ff22c32 - 56 2ff22c33 - 78
另字节序和位序的联系是很紧凑的;参见关于网络协议中IP头部的数据构造定义
typedef struct _ip
{
}IP;