author:skate
time :2010/03/05


Big Endian与Little Endian区别

1. 什么是Big Endian和Little Endian?

在设计计算机系统的时候,有两种处理内存中数据的方法。一种叫为little-endian,存放在内存中最低位的数值是来自数据的
最右边部分(也就是数据的最低位部分)。比如一个16进制数字0x12345678,在内存存放的方式如下:

低地址 ------------------> 高地址
       ####################################################
值    #0111,1000 #0101,0110 # 0011,0100  #  0001,0010  #
       ####################################################
地址 #      100        #     101        #          102       #      103          #
       ####################################################

另一种称为big-endian,正好相反,存放在内存中最低位的数值是来自数据的最左边边部分(也就是数据的最高为部分)。
 比如一个16进制数字0x12345678,在内存存放的方式如下:

低地址 ------------------> 高地址
       ####################################################
 值   # 0001,0010  #0011,0100 # 0101,0110  #  0111,1000  #
       ####################################################
地址 #       100         #     101         #        102        #        103         #
       ####################################################

从上面的例子可以看到,采用big endian方式存储数据是符合我们人类的思维习惯的

big endian:是指低地址存放最高有效字节(MSB:Most Significant Byte, 最高有效字节),
little endian:则是低地址存放最低有效字节(LSB:Least Significant Byte, 最低有效字节)

谈到字节序的问题,必然牵涉到两大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。
IBM, Motorola(Power PC), Sun的机器一般采用大端(big endian)方式存储数据。而x86系列则采用
little endian方式存储数据

是Little Endian还是Big Endian与操作系统和芯片类型都有关系。 具体情形参考处理器手册。

2. 如何判断系统是Big Endian还是Little Endian

在/usr/include/中(包括子目录)查找字符串BYTE_ORDER(或_BYTE_ORDER, __BYTE_ORDER),确定其值。
这个值一般在endian.h或machine/endian.h文件中可以找到,有时在feature.h中,不同的操作系统可能
有所不同。一般来说,Little Endian系统BYTE_ORDER(或_BYTE_ORDER,__BYTE_ORDER)为1234,Big Endian系统为4321

3. 为什么要注意字节序的问题?

在单机环境里的程序不用考虑字节序(endian)的问题,因为字节序的不同是在不同单机环境里的,如果你要在不同单机
之间传递数据,就要考虑字节序的问题,因为数据是按地址存取的,如果你是不同的字节序单机通信,就会导致传输数据
”变异“,例如,把little endian环境的数据0x12345678的指针传递给big endian环境,数据就“变异”为0x78563412

所有网络协议也都是采用big endian的方式来传输数据的。所以有时我们也会把big endian方式称之为网络字节序。当两台采
用不同字节序的主机通信时,在发送数据之前都必须经过字节序的转换成为网络字节序后再进行传输。

在异构主机数据库迁移的过程一定要注意这个,如果字节序不同,可以用rman convert转换字节序(endian)

例如:

RMAN TARGET /
CONVERT TABLESPACE ts1,ts2 TO PLATFORM 'Linux IA (32-bit)' FORMAT '/tempdir/%U';

----end----

Big Endian与Little Endian区别相关推荐

  1. Little endian和Big endian的区别

    许多嵌入式系统程序员对Little endian和Big endian模式的概念模糊不清,其实Little endian和Big endian是多字节寻址的微处理器中,两种数据书写和存储顺序的排列方式 ...

  2. Unicode、UTF-8、Big Endian、Little Endian、GBK、UCS-2

    Unicode.UTF-8.Big Endian.Little Endian.GBK.UCS-2 一.Unicode.UCS.GBK 1.开始计算机只在美国用.八位的字节一共可以组合出256(2的8次 ...

  3. big endian and little endian

    big endian(大端)和little endian(小端)表示机器对变量字节的存储顺序.big endian表示低地址存放最高有效字节,little endian表示低地址存放最低有效字节.这里 ...

  4. URL编解码、Big Endian和Little Endian

    一.Endian的起源 在各种计算机体系结构中,对于字节.字等的存储机制有所不同,因而引发了计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特.字节.字.双字等等)应该以什么样的顺序进行 ...

  5. CPU中的Little Endian与Big Endian

    CPU中的Little Endian与Big Endian 今天在学习利用buildroot编译软件包的时候,make menuconfig之后在Target Architecture选项中发现了同一 ...

  6. VB 文件编码互换模块(支持 Ansi,UTF-8,Unicode(little endian),Unicode big endian)

    'VB 文件编码互换模块,支持对Ansi,UTF-8,Unicode(little endian),Unicode big endian编码之间进行转换. Option Explicit Privat ...

  7. big endian与little endian

    很多人都知道big endian和little endian但是很少有人知道它们的实质,因为只要你在网上一google,出来的都是那个经典的典故,不可否认,那个典故很重要,但是那也仅仅是个故事而已,计 ...

  8. Big Endian与Litter Endian

    Big Endian是大端,Litter Endian是小端,意思很明了,但是很难记住谁是谁.每次涉及到这个概念的时候,我都会GOOGLE一下,浪费精力. 怎样才能永远记住他们呢?网上搜索了一下,有很 ...

  9. Big Endian 和 Little Endian

    Big Endian 和 Little Endian 一.字节序 来自:http://ayazh.gjjblog.com/archives/1058846/ 谈到字节序的问题,必然牵涉到两大CPU派系 ...

  10. 整型,长整型,无符号整型等 大端和小端(Big endian and Little endian)

    一.大端和小端的问题 对于整型.长整型.无符号整型等数据类型,Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节):而 Little endian ...

最新文章

  1. AJAX 跨域请求 - JSONP获取JSON数据
  2. VDI序曲九 实战体验Remote FX(重磅推荐)
  3. JSON数据从MongoDB迁移到MaxCompute最佳实践
  4. java assert使用场景_Java线程池的四种用法与使用场景
  5. 编程学习笔记(第三篇)面向对象技术高级课程:绪论-软件开发方法的演化与最新趋势(3)软件开发的现状、UML扩展...
  6. JQuery的ajax函数执行失败,alert函数弹框一闪而过
  7. java代码整合_java合并多个文件的实例代码
  8. 第13届年度Webby奖采用Silverlight / 13th Annual Webby Awards powered by Silverlight
  9. xml转svg_C# Excel 转PDF/图片/HTML/TXT/XML/XPS/CSV/ODS/SVG/EMF
  10. MySQL Aggregate (GROUP BY) Function Descriptions
  11. supervisor-3:xml_rpc
  12. JavaScript中call,apply,bind方法的总结。
  13. JavaScript 数据类型梳理
  14. 控制台程序线程莫名被阻塞
  15. Discuz! 6.x/7.x 全局变量防御绕过导致命令执行
  16. 聚类算法(4)--Hierarchical clustering层次聚类
  17. 微信获取open ID
  18. 常用ASCII URL编码对照表,JavaScript中如何把url的%20、%22、%28、%29、%7B、%7D解析还原成真实的字符
  19. 关于php中laravel框架的学习--适合菜鸟初学者
  20. DB2性能优化 – 如何通过db2优化工具提升SQL查询效率

热门文章

  1. 《科尼龙作曲家》——简单易用又功能丰富的五线谱编辑和作曲软件
  2. html在页面显示一个正方形,CSS实现一个自适应的正方形的方法示例
  3. 基于设备树的TQ2440触摸屏驱动移植
  4. 计算机开机时间设置方法,win10系统设置电脑开关机时间的技巧介绍
  5. 博通linux网卡驱动,在64位CentOS 6 系统上安装Broadcom网卡驱动
  6. js基础——图片切换实例
  7. 北工大计算机学院大赛,做北工大的竞赛咖!这些信息你一定不能错过!
  8. zcmu——4939: 大整数排序
  9. python实现指纹识别毕业论文_指纹识别系统毕业论文.doc
  10. 邯郸三中高考2021成绩查询,邯郸2021年中考统考成绩