尾端
计算机中数据存储的模式
尾端是计算机中数据存储的一种模式。首先由Danny Cohen(1980)引入计算机科学界。
起源
“......我下面要告诉你的是,Lilliput和Blefuscu这两大强国在过去的三十六个月里一直在苦战。战争开始时由于一下原因:我们大家都认为,吃鸡蛋前,原始的方法是打破鸡蛋较大的一端,可是当今皇帝的祖父小时候吃鸡蛋,一次按古法打鸡蛋时碰巧将一个手指弄破了,因此他的父亲,当时的皇帝,就下了一道赦令,命令全体臣民吃鸡蛋是打破鸡蛋较小的一端,违令者重罚。老百姓们对这项命令极为反感。历史告诉我们,由此曾发生过六次叛乱,其中一个皇帝送了命,另一个丢了王位。这些判断大多都是由Blefuscu的王国大臣们煽动起来的。叛乱平息后,流亡的人总是逃到那个帝国区寻求避难。据统计,先后几次有一万一千人情愿受死也不肯去打破鸡蛋较小的一端。关于这一争端,曾出版过几百本大部著作,不过大端字节顺序。”
分类
计算机界存在着大尾端与小尾端两大阵营,两者存在着极深的鸿沟。
区别
定义
大尾端:高位在低地址。
小尾端:低位在低地址。
字节层次
程序验证:
int _tmain(int argc, _TCHAR* argv[])
{
union UData {
unsigned long integer;
unsigned char array[4];
} Data;
Data.integer=0x12345678;
return 0;
}
ps:一般PC是小端存储的。
字节内位序
在字节内依然是:
大端:高位放在低地址。
小端:低位放在低地址。
大端与小端位序完全是镜像的。下面的程序可证明。
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完全共享同一空间。
return 0;
}
在运行程序前请先推理一下会输出什么,然后运行一下看看结果。
上述程序在普通PC上(小尾端)结果应该是:
4 3 2 1
参考资料
最新修订时间:2024-05-21 16:20
目录
概述
起源
参考资料