尾端
定义:计算机中数据存储的一种模式。首先由Danny Cohen(1980)引入计算机科学界。
分类:计算机界存在着大尾端与小尾端两在阵营,两者存在着极深的鸿沟。
大尾端与小尾端区别1.定义大尾端:高位在低地址。
小尾端:尾位在低地址。2.字节层次。如整数0x12345678在内存中应该如下存放:
地低: base | base+1 | base+2 | base+3 |
------------------------------------------------ |
大端 | 12 | 34 | 56 | 78 |
----------------------------------------------- |
小端 | 78 | 56 | 34 | 12 |
程序验证:
int _tmain(int argc, _TCHAR* argv[])
{
union UData {
unsigned long integer;
unsigned char array[4];
} Data;
Data.integer=0x12345678;
printf("%x%x%x%x
",Data.array[0],Data.array[1], Data.array[2], Data.array[3]);
return 0;
}
ps:一般PC是小端存储的。3.字节内位序 。在字节内依然是:
大端:高位放在低地址。
小端:低位放在低地址。
即大端与小端位序完全是镜像的。下面的程序可证明。
int _tmain(int argc, _TCHAR* argv[])
{
struct BitData {
unsigned Bit0_3:4;
unsigned Bit4_7:4;
unsigned Bit8_11:4;
unsigned Bit12_15:4;
};
union SData {
unsigned short Data;
struct BitData BData;
} ssData;
ssData.Data=0x1234;//此时BData与Data完全共享同一空间。
printf("%x%x%x%x
",ssData.BData.Bit0_3,ssData.BData.Bit4_7,ssData.BData.Bit8_11,ssData.BData.Bit12_15);
return 0;
}
在运行程序前请先推理一下会输出什么,然后运行一下看看结果。
上述程序在普通PC上(小尾端)结果应该是:
4 3 2 1
。
[1]