请输入您要查询的百科知识:

 

词条 尾端
释义

定义:

计算机中数据存储的一种模式。首先由Danny Cohen(1980)引入计算机科学界。

起源:

“......我下面要告诉你的是,Lilliput和Blefuscu这两大强国在过去的三十六个月里一直在苦战。战争开始时由于一下原因:我们大家都认为,吃鸡蛋前,原始的方法是打破鸡蛋交大的一端,可是当今皇帝的祖父小时候吃鸡蛋,一次按古法打鸡蛋时碰巧将一个手指弄破了,因此他的父亲,当时的皇帝,就下了一道赦令,命令全体臣民吃鸡蛋是打破鸡蛋较小的一端,违令者重罚。老百姓们对这项命令极为反感。历史告诉我们,由此曾发生过六次叛乱,其中一个皇帝送了命,另一个丢了王位。这些判断大多都是由Blefuscu的王国大臣们煽动起来的。叛乱平息后,流亡的人总是逃到那个帝国区寻求避难。据统计,先后几次有一万一千人情愿受死也不肯去打破鸡蛋较小的一端。关于这一争端,曾出版过几百本大部著作,不过大端派的书一直是受禁的,法律也规定该派的任何人不得做官。"(摘自蒋剑锋译的《格利佛游记》第一卷第4章)Swift是在讽刺英国(Lilliput)和法国(Blefuscu)之间的持续的冲突。Danny Cohen,一位网络协议的早期开创者,第一次使用这两个术语来指代字节顺序。”

分类:

计算机界存在着大尾端与小尾端两在阵营,两者存在着极深的鸿沟。

大尾端与小尾端区别

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\\t%x\\t%x\\t%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\\t%x\\t%x\\t%x\",ssData.BData.Bit0_3,ssData.BData.Bit4_7,ssData.BData.Bit8_11,ssData.BData.Bit12_15);

return 0;

}

在运行程序前请先推理一下会输出什么,然后运行一下看看结果。

上述程序在普通PC上(小尾端)结果应该是:

4 3 2 1

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/11/15 17:37:52