ビッグ・エンディアンとリトル・エンディアンの順序

コンピュータ・メモリーは,バイトとワードの階層構造に編成された,ビットの線形な並びです。「ビッグ・エンディアン」と呼ばれるシステムでは,ビットとバイトは最上位ビット (MSB,「左」,またはハイ・エンド) から順番に番号付けされます。「リトル・エンディアン」と呼ばれるシステムでは,ビットとバイトは最下位ビット (LSB,「右」,またはロー・エンド) から順番に番号付けされます。次図は,ワード内のバイト・アドレス指定の場合,この 2 規約間の違いを示しています。

ワード内のバイト順序

この 2 つの規約では,副構成要素として格納されるデータ型 (ワード内のバイト) は,対応するワード内の異なる場所に格納されます。次図は,この 2 つの規約でのいくつかのデータ型表現の違いを示しています。文字は 8 ビット文字型データを表しており,数字は 32 ビット整数型データに対する 8 ビットの部分的な寄与分を表しています。

ワード内の文字型および整数型データ

図の左半分は,ビッグ・エンディアンのワードからリトル・エンディアンのワードに連続的にバイトを転送した場合 (ビッグ・エンディアンのバイト 0 をリトル・エンディアンのバイト 0 に,ビッグ・エンディアンのバイト 1 をリトル・エンディアンのバイト 1 に …) に,リトル・エンディアンのワード内にデータがどのように格納されるかを示しています。1 バイトの大きさのデータ (この例では文字型) は正しい順序になりますが,整数型データは元の 2 進値を正しく表していないことに注意してください。図の右半分は,正しい 32 ビット整数値を再現するためには,ワードの中央を中心にバイトをスワップしなければならないことを示しています。バイトをスワップすれば,次図に示すように,上の 2 つの図は同じになります。

ビッグ・エンディアンからリトル・エンディアンに送られるデータ

上の例を一般化して,浮動小数点データ型と,マルチワードのデータ型も同じように考えることができます。次表に,いくつかの一般的なプロセッサーの順序付けの性質を要約します。

プロセッサーの順序付けの性質

プロセッサー バイトの順序 ビットの順序
Intel 80486, Pentium シリーズ リトル・エンディアン リトル・エンディアン
Compaq Alpha と VAX リトル・エンディアン リトル・エンディアン
Motorola 680XX ビッグ・エンディアン リトル・エンディアン
IBM メインフレーム ビッグ・エンディアン ビッグ・エンディアン

ここでの重要な結論は,各システムの順序付けの性質についてほとんどまたはまったく知らなくても,8 ビット文字型データについては,ほとんどのシステム間で可搬性のある連続的な転送が可能であるということです。

ビッグ・エンディアンとリトル・エンディアンのデータと,Visual Fortran の書式なしデータの変換機能についての詳細は,「書式なし数値データの変換」を参照してください。