検索に移動この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(2016年7月)この記事には独自研究が含まれているおそれがあります。問題箇所を検証し出典を追加して、記事の改善にご協力ください。議論はノートを参照してください。endianness)は、複数のバイトなどを並べる順序の種類である。order)、ないしそれを一部訳して日本語ではバイト順とも言う。英語の「endian」という単語自体には元々は「配置方式」「並び順」といった意味はなかった(#語源を参照)。endianness(エンディアンネス)である。12」のように並べる順序はリトルエンディアン[2]である。34」のように並べる方式もあり、ミドルエンディアン[3]などという。このミドルエンディアンの2つのうちの前者は、DECのPDP-11で使われていたことからPDPエンディアンなどとも呼ばれる。ミドルエンディアンは、後付けの拡張などが理由で現れるが、実例はそんなに多くはない。ような表現を使ったほうが安全ではある)。ビッグエンディアンは、メモリ内にそのように並べた場合に、一般的なバイト単位で出力するダンプリストや、メモリ内の通常の文字列の場合と同様にして出力すると、人間が普段慣れている記法と同じ順序になるのでわかりやすいという利点がある。桁といったように、数値の表現法と対応しているという整合性がある。データの送受信などにおける順番では、多倍長加算などで最下位から順番に計算したほうが繰上りの計算がしやすいこと、などとも相性がよい。ネットワーク機器などで、アドレスの上位で送り先のおおまかな識別ができる場合など、キャリアグレードルータ等ではデータを受信しながら処理を始めてしまうといったものもあり、そういった場合はビッグエンディアンに利がある。IBMのメインフレーム(及び互換機)、モトローラのMC68000(及び後継)、サン・マイクロシステムズのSPARC等はビッグエンディアンを採用し、DECのVAX、インテルのx86等はリトルエンディアンを採用している。プロセッサも存在する。言語処理系などの仮想マシンの類では、プラットフォームに応じ使い分ける設計のものもあれば、片方に寄せる設計のものもある。Java仮想マシンはプラットフォームを問わずビッグエンディアンである。互換性・移植性[編集]エンディアンの相違は、単一あるいは同種のシステムに閉じた運用をする限りでは通常は問題にならない。それ以上のことをする場合の、問題が起こりやすい例を示す。構成するプロセッサが異なるマルチプロセッサ環境で共有メモリを使用する場合TCP/IPプロトコルスタックでは、ビッグエンディアンに統一しており、それをネットワークバイトオーダという。この分野では、それに対し、各コンピュータのエンディアンをホストバイトオーダという。画像や音声などのバイナリファイルにおいても、互換性を確保するため、エンディアンが規定されている例が多い(「多い」のではなく、決まってなければ相互運用性が欠如した、不備である。それをわかってないように思われる例は非常に多い)。Unicodeにおいても、構成要素が多バイトとなるエンコーディング(主にUTF-16)では、エンディアンが問題となる。予約されており、データの先頭にこれを付与することで、データを受け取る側がエンディアンを判別できるようになっている。復号側が以上のルールでエンディアンを判別する狭義のUTF-16とは別に、エンディアンを事前に一方に決定しているUTF-16BEとUTF-16LEが存在する。Windows上の文書における「Unicodeテキスト」は、BOMがない場合、UTF-16LE(リトルエンディアン)である。例[編集]32ビットの場合で、より詳細に示す。いう値をメモリに格納した場合を示している。これは16進で左から右に読むのに似ている。そのアドレスは一番低い。他のバイトはアドレス増加に追従する。ミドルエンディアン[編集]さらに、ミドルエンディアン又はミックスドエンディアンと総称的に呼ばれることもある、さらに込み入ったバイトオーダもある(こういった「変」なものを扱う時は、どのような組合せなのか具体例での注意深い確認が欠かせない)。著名な例としては、PDP-11における32ビットワードの扱い方がある。上位ハーフワード(16ビット)と下位ハーフワードとしてはビッグエンディアンで格納される。各ハーフワード内の上位下位の各オクテットはリトルエンディアンで格納される。PDP-エンディアンという別名がある。...ARMアーキテクチャは32ビットワードを32ビットワードから2バイトに格納した場合、このエンディアンを生成することができる。[5]MIPSのELFファイル中に、64ビットワードを「上位32ビットはビッグエンディアン、下位32ビットはリトルエンディアン」で格納する、というフィールドがある[6]。[信頼性要検証]エンディアンの確認[編集]C言語[編集]C言語では共用体を使ってエンディアンを確かめることが出来る。標準規格では処理系定義とされている動作に依存している[7]。;}語源[編集]ビッグエンディアンとリトルエンディアンという語は、ジョナサン・スウィフトの風刺小説『ガリヴァー旅行記』の中のエピソードに由来する。Peace"[9][10]で広く知られるようになった。標準規格では、共用体を使って、同じ領域を異なる型としてアクセスした場合は処理系定義である。ruleにより未定義であるので良くない。4.9.3で動作確認済み。20170516で確認。記録は「Endian確認プログラム、64bitを追加。(日時は個人設定で未設定ならばUTC)。表示-継承ライセンスの下で利用可能です。追加の条件が適用される場合があります。詳細は利用規約を参照してください。Cookieに関する声明モバイルビュ。