一、基本概念位的概念:
在計算機中,一個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平台是屬于大/小位元組序
[email protected] bys3>col PLATFORM_NAME for a40
[email protected] bys3>select PLATFORM_ID,PLATFORM_NAME from v$database; 查目前平台的位元組情況
PLATFORM_ID PLATFORM_NAME
----------- --------------------
10 Linux IA (32-bit)
[email protected] 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.