Chinaunix首页 | 论坛 | 博客
  • 博客访问: 367777
  • 博文数量: 36
  • 博客积分: 955
  • 博客等级: 准尉
  • 技术积分: 470
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-15 13:37
文章分类

全部博文(36)

文章存档

2012年(15)

2011年(21)

分类: LINUX

2011-10-19 22:04:59

在操作系统中大端法称为(big endian),小端法称为(little endian)。
首先说一下endian的背景:
大端和小端的说法起源于战争,因为什么引起的呢?是鸡蛋!据说是一个老国王因为吃鸡蛋打大头的那边而把手弄伤来,从而下令让他的臣民不准在吃鸡蛋的时候打大的一边。违令者重伐!但是老百姓为此十分反感,于是因此引发了6场叛乱,1这些百姓宁愿受死也不去打鸡蛋较小的一端。
这就是大端与小端的来历,我觉得这帮人都很无聊啊-.-
其实通过这个传说不难看出对大端与小端的一些理解,就是根本无关紧要的模式。哪种都可以,两者根本没有技术上的差别,但是就是有很多的人在纠结到底哪种更好。。。其实选择哪种字节排序的选择都是任意的,没有一种绝对的规定。

下面说说自己对于计算机中大端模式与小端模式的一些理解:

先说下存储单元的概念:

存储单元一般应具有存储数据和读写数据的功能,一般以8位二进制作为一个存储单元,也就是一个字节。每个单元有一个地址,是一个整数编码,可以表示为二进制整数。程序中的变量和主存储器的存储单元相对应。变量的名字对应着存储单元的地址,变量内容对应着单元所存储的数据。内存中的一个地址对应的是一个存储单元

假如一个整数int型的数字305419896,化成16进制是0x12345678,那么在内存中是怎么存储的?我分两种模式说:(假设存储这个数字的地址空间从2000开始,一个地址能存,因为一个存储地址对应一个存储单元,所以存储一个整形变量需要4个存储地址即4个存储单元,所以2000,2001,2002,2003是一会我们假定的存储地址)

大端模式:
地址空间:          2000    2001    2002    2003
存储单元存储的内容:0x12    0x34    0x56    0x78

小端模式:
地址空间:          2000    2001    2002    2003
存储单元存储的内容:0x78    0x56    0x34    0x12

这就是大端模式与小端模式,用术语说出来就比较难理解了,属于解释就是大端模式:数据的低位保存在内存高地址中,小端模式:数据的高位保存在内存的低地址中。我觉得还是形象化的东西可能会好记一点。
阅读(2264) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~