本文最后更新于138 天前,其中的信息可能已经过时,如有错误请发送邮件到2289035571@QQ.COM
大端和小端
- Big-Endian(大端):高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
- Little-Endian(小端):低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
高低字节
在十进制中靠左边的是高位字节,靠右边的是低位字节,在其他进制也是如此。例如 0x12345678,从高位到低位的字节依次是0x12、0x34、0x56和0x78。
高低地址
示例
数据: 0x1234 大小端传输:
在十进制中我们都说靠左边的是高位,靠右边的是低位,在其他进制也是如此。就拿 0x1234来说
高位:0x12
低位:0x34
其中,地址 0x00 是低地址,0x01是高地址。
地址: 0x00 0x01
大端: 12 34
小端: 34 12
为什么要有字节序
计算机电路先处理低位字节,效率比较高,因为计算都是从低位开始的。所以,计算机的内部处理都是小端字节序。在计算机内部,小端序被广泛应用于现代 CPU 内部存储数据;而在其他场景,比如网络传输和文件存储则使用大端序。
- 计算都是从低位开始的,因此计算机内部处理采用小端序,效率较高。
- 而大端序存储的时候,由于符号位在高位,因此对于数据正负或大小的判断也就方便许多。另外,大端序也更符合人类的阅读习惯。
高8位(/256)和低8位 (%256)
0001 1111 1111 = 511
0000 1111 1111 = 255
显而易见的,如果想得到一个数的低8位,只需要将这个数 %256 ,那么取得的余数就是该数的低八位。
相反的,将这个数 /256 ,那么得到的值就是该数的高八位。