【杂】大小端、字节、字

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

原文地址:https://www.cnblogs.com/caixu/p/2670871.html