(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个字节