不同系统使用的CPU不同,对数据的存储形式也不同,分为两种。
大端模式:ARM,摩托罗拉
特性:内存的高地址存储数据的低位,内存的低地址存储数据的高位。(低对高)
小端模式:intel,MIPS
特性:内存的低地址存储数据的低位,内存的高地址存储数据的高位。(低对低)
1个十六进制数 = 4个二进制数
1bytes = 8个二进制数
1bytes = 2个十六进制数
例:int x = 0x12345678;(123左边为高位,右边为低位)
低地址 | 小端模式 | 大端模式 |
---|---|---|
0xdff30 | 0x78 | 0x12 |
0xdff31 | 0x56 | 0x34 |
0xdff32 | 0x34 | 0x56 |
0xdff33 | 0x12 | 0x78 |
不同类型的指针变量,对c语言中的同一块内存进行读取的时候,每次读取的字节数不同。读取为指针变量+*,剩下数据类型的大小。
例:int a = 0x12345678;(ubuntu默认小端模式)
低地址 | char | short |
---|---|---|
0xdff00 | 0x78 | 0x5678 |
0xdff01 | 0x56 | 0x1234 |
0xdff02 | 0x34 | |
0xdff03 | 0x12 |