(1)大小端
输入0x12345678,(明显左边是数据的高位,右边是数据的低位),(假设该变量地址为0xFFFF0000)
a)大端(数据的高位放地址的低位)表示
0xFFFF0000:12 34 56 78 (是不是跟书写顺序一样?)
形象化:
| 78 |
| 56 |
| 34 |
| 12 | 0xFFFF0000
b)小端(数据的高位放地址的高位)表示
0xFFFF0000:78 56 34 12
形象化:
| 12 |
| 34 |
| 56 |
| 78 | 0xFFFF0000
c)通常我们看到的x86结构,ARM处理器等都是小端
d)实验验证
#include <iostream> using namespace std; int main() { int x = 0x12345678; short a = ((short *)&x)[0]; short b = ((short *)&x)[1]; printf("a = %x\n",a); printf("b = %x\n",b); return 1; }
输出:(结果提示电脑为小端)
a = 5678
b = 1234
请按任意键继续. . .
-------------------------------------------------------------------------------------------
(2)字节、字
a)一个字节(BYTE)=8位;
一个字(WORD)=32位,运算/取址的独立单元;(注:不是汉字的字,1个汉字16位,而这个WORD为32位)
16位的称半字(HALFWORD);
64位的称为双字(DOUBLEWORD);
b)英文字母 -> 1个字节
汉字 -> 2个字节
英文字符 -> 1个字节
中文字符 -> 2个字符
注:估计用过source insight的人都对汉字/中文字符有深刻体会,呵呵,需要删两下才能删完,形象的说明它们是两个字节
c)char -> 1个字节
short -> 2个字节
int -> 4个字节
double -> 8个字节