关于Big-Endian/Little-Endian 字节顺序的简单记录

一、基本概念位的概念:

在计算机中,一个0或1称为一位(bit)。

字节:连续的八位称为一个字节(Byte),字节是计算机中可单独处理的最小单位。
即以字节为基本单位来解释信息,规定1个字节是8个二进制位。
通常1个ASCII码用1个字节存放,1个汉字用2个字节存放,双精度浮点实数用8个字节存放。

二、字节顺序由来

在写字符流时,因为字符型只占一个字节数,计算机只须按一个字符一个字符写入文件即可。
但是如果是处理整型时,由于整型占4个字节,所以一个整型内部的字节存储排列的顺序直接关系到被计算机识别出来的整型值.
某种意义上也可直接理解计算机的识别顺序就是所谓的字节顺序。

三、一些有关字节顺序的解释

不同的计算机结构有时使用不同的字节顺序存储数据。
例如,基于Intel的计算机存储数据的顺序与Macintosh(Motorola)计算机就是相反的。
Intel字节顺序称为“Little-Endian”,反之Macintosh(Motorola),还有网络上采用标准是“Big-Endian”。
在将应用程序从一种架构类型迁移至另一种架构类型的过程中,经常会遇到字节排列顺序(endianness)问题。
字节排列顺序是数据元素及其单个字节在内存中存储和表示时的顺序。

通过以上分析,会发现有两类字节排列顺序:
big-endian (通常为网络字节顺序)和
little-endian(主机字节顺序)。
目前应该little endian是主流
下面是这些术语的解释:
Big-Endian        最重要的字节在整个内容的左端。
Little-Endian     最重要的字节在整个内容的右端。
Big Endian
  低地址                                            高地址
  高位字节                                          低位字节
   ----------------------------------------->
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     12     |      34    |     56      |     78    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Little Endian
  低地址                                            高地址
  低位字节                                          高位字节
   ----------------------------------------->
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     78     |      56    |     34      |     12    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
对于big-endian处理器,在将字放在内存中时,是从最低位地址开始的,首先放入最重要的字节。
对于little-endian处理器,如Intel处理器,首先放入的是最不重要的字节。

四、ORACLE中通过查看V$TRANSPORTABLE_PLATFORM视图查看各主机OS平台是属于大/小字节序

BYS@ bys3>col PLATFORM_NAME for a40
BYS@ bys3>select PLATFORM_ID,PLATFORM_NAME from v$database;  查当前平台的字节情况
PLATFORM_ID PLATFORM_NAME
----------- --------------------
         10 Linux IA (32-bit)

BYS@ bys3> select * from V$TRANSPORTABLE_PLATFORM;
PLATFORM_ID PLATFORM_NAME                            ENDIAN_FORMAT
----------- ---------------------------------------- --------------
          1 Solaris[tm] OE (32-bit)                  Big
          2 Solaris[tm] OE (64-bit)                  Big
          7 Microsoft Windows IA (32-bit)            Little
         10 Linux IA (32-bit)                        Little
          6 AIX-Based Systems (64-bit)               Big
          3 HP-UX (64-bit)                           Big
          5 HP Tru64 UNIX                            Little
          4 HP-UX IA (64-bit)                        Big
         11 Linux IA (64-bit)                        Little
         15 HP Open VMS                              Little
          8 Microsoft Windows IA (64-bit)            Little
          9 IBM zSeries Based Linux                  Big
         13 Linux x86 64-bit                         Little
         16 Apple Mac OS                             Big
         12 Microsoft Windows x86 64-bit             Little
         17 Solaris Operating System (x86)           Little
         18 IBM Power Based Linux                    Big
         19 HP IA Open VMS                           Little
         20 Solaris Operating System (x86-64)        Little
         21 Apple Mac OS (x86-64)                    Little
20 rows selected.

你可能感兴趣的:(big-endian,little-endian)